环/教程/函数
在本章中,我们将学习以下内容:
- 定义函数
- 调用函数
- 声明参数
- 传递参数
- 主函数
- 变量作用域
- 程序结构
- 返回值
- 递归
定义新函数
语法
func <function_name> [parameters]
Block of statements
.. 注意:: 不需要关键字来结束函数定义。
示例
func hello
see "Hello from function" + nl
要调用不带参数的函数,键入函数名,然后是 ()
.. 提示:: 可以在函数定义和函数代码之前调用函数。
示例
hello()
func hello
see "Hello from function" + nl
示例
first() second()
func first see "message from the first function" + nl
func second see "message from the second function" + nl
要声明函数参数,在函数名之后键入参数列表,参数列表是一组用逗号分隔的标识符。
示例
func sum x,y
see x+y+nl
要将参数传递给函数,在函数名之后键入参数,参数位于 () 之内。
语法
funcname(parameters)
示例
/* output
** 8
** 3000
*/
sum(3,5) sum(1000,2000)
func sum x,y see x+y+nl
使用环编程语言,主函数是可选的,当它被定义时,它将在其他语句结束之后执行。
如果没有任何其他语句单独存在,主函数将是第一个 `入口点 <http://en.wikipedia.org/wiki/Entry_point>`_
示例
# this program will print the hello world message first then execute the main function
See "Hello World!" + nl
func main
see "Message from the main function" + nl
环编程语言使用 `词法作用域 <http://en.wikipedia.org/wiki/Scope_%28computer_science%29#Lexical_scope_vs._dynamic_scope>`_ 来确定变量的作用域。
在函数内部定义的变量(包括函数参数)是局部变量。在函数外部定义的变量(在任何函数之前)是全局变量。
在任何函数内部,除了全局变量之外,我们还可以访问在该函数内部定义的变量。
示例
# the program will print numbers from 10 to 1
x = 10 # x is a global variable.
func main
for t = 1 to 10 # t is a local variable
mycounter() # call function
next
func mycounter
see x + nl # print the global variable value
x-- # decrement
.. 注意:: 在 for 循环之前使用主函数将 t 变量声明为局部变量,建议使用主函数,而不是直接键入指令来将新变量的作用域设置为局部变量。
+--------------------------------+
| Source Code File Sections |
+================================+
| Load Files |
+--------------------------------+
| Statements and Global Variables|
+--------------------------------+
| Functions |
+--------------------------------+
| Packages and Classes |
+--------------------------------+
应用程序可能是 一个或多个文件。
要在项目中包含另一个源文件,只需使用 load 命令。
语法
Load "filename.ring"
示例
# File : Start.ring
Load "sub.ring"
sayhello("Mahmoud")
# File : sub.ring
func sayhello cName
see "Hello " + cName + nl
函数可以使用 Return 命令返回一个值。
语法
Return [Expression]
.. 提示:: Return 命令之后的表达式是可选的,我们可以使用 Return 命令来结束函数执行,而不返回任何值。
.. 注意:: 如果函数没有返回显式值,它将返回 NULL(空字符串 = "")。
示例
if novalue() = NULL
See "the function doesn't return a value" + nl
ok
func novalue
环编程语言支持 `递归 <http://en.wikipedia.org/wiki/Recursion_%28computer_science%29>`_,函数可以使用不同的参数调用自身。
示例
see fact(5) # output = 120
func fact x if x = 1 return 1 else return x * fact(x-1) ok