跳转到内容

环/教程/函数

来自维基教科书,开放的书籍,开放的世界
<

在本章中,我们将学习以下内容:

  • 定义函数
  • 调用函数
  • 声明参数
  • 传递参数
  • 主函数
  • 变量作用域
  • 程序结构
  • 返回值
  • 递归

定义函数

[编辑 | 编辑源代码]

定义新函数

语法

	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


华夏公益教科书