猫史档案馆


【文言文编程】教程帖 Part6

用户:ZH-Y-QZH-Y-Q查看:0 回复:0 评论:0 创建时间:2020-02-19T11:10:41


Part 6 函数 声明

函数声明开始:吾有一術。名之曰「函数」。是術曰。

相当于[返回值类型未知] function()

带参数:

吾有一術。名之曰「函数」。欲行是術。必先得一數。曰「参数」。是術曰。

相当于[返回值类型未知] function(int var_a)

吾有一術。名之曰「函数」。欲行是術。必先得...(参数个数)數。曰「参数一」。曰「参数二」。...(声明各种参数)是術曰。

注:这里的参数类型也可以是字符串()、布尔值等。

函数结束声明:是謂「函数」之術也。

格式:

吾有一術。名之曰「函数」。...(参数声明,可选)是術曰。
    ...(函数内容)
是謂「函数」之術也。

比如这就是一个求线段树右喵的函数(注意参数不是以指针形式传入的)

吾有一術。名之曰「其右」。欲行是術。必先得一數。曰「节点」。是術曰。
    乘「节点」以二。昔之「节点」者。今其是矣。
    加「节点」以一。昔之「节点」者。今其是矣。
    乃得「节点」也。
是謂「其右」之術也。

返回结果:乃得...(函数返回值)也。注意编译时它自带右括号,因此在分支或循环语句末尾时要处理(把云云。删去)。

当返回不带返回值时,使用乃歸空無。语句。

调用

函数的调用非常简洁。施「函数」。(无参)施「函数」於...。於...(代入各参数)(有参)

尽管函数声明时规定了参数个数,但是调用时参数个数可以少于规定个数。这将返回一个函数,表现为原函数前面一些参数固定的版本。

举例:

吾有一術。名之曰「修改」。欲行是術。必先得六數。曰「节点」。曰「左」。曰「右」。曰「改左」。曰「改右」。曰「增值」。是術曰。[1]
    ...
是謂「修改」之術也。

...
施「修改」於一。於一。於「树长」。名之曰「简易修改」。[2]
...
施「简易修改」於「改左」。於「改右」。於「增值」。...[3]

说明:上面代码中[1]处声明了线段树的修改函数,其中有六个参数。考虑到主函数中调用此函数前三个参数是固定的,于是在[2]处通过不完全参数定义了新函数「简易修改」,调用简易版函数时([3])只用带入原函数的后三个参数就可以了。

附加:函数嵌套的一种简易方法

【原文链接 https://www.luogu.com.cn/blog/2017gdgzoi999/wenyan-lang


回复

上一页1 页 / 共 0下一页