用户:ZH-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】