5.1 函数的定义和调用
-
核心概念: 函数是一段封装了特定功能的代码块,可以被多次调用。
-
函数定义语法:
返回类型 函数名(参数列表) { // 函数体 return 返回值; // 可选 }
-
返回类型: 函数返回值的类型,如果函数没有返回值,则为
void
。 -
函数名: 函数的标识符,用于调用函数。
-
参数列表: 函数接受的参数,每个参数包括类型和参数名。
-
函数体: 包含函数功能的代码块。
-
返回值: 函数返回的结果,类型必须与返回类型匹配。
-
函数调用语法:
函数名(参数值列表);
-
示例代码:
int add(int a, int b) { return a + b; } void printMessage(string message) { print(message); } int result = add(10, 20); print(result); // 输出 30 printMessage("Hello, FlexScript!"); // 输出 Hello, FlexScript!
5.2 函数的参数和返回值
-
参数传递:
- 值传递: 函数内部对参数的修改不会影响函数外部的变量。
- 引用传递: FlexScript 不直接支持引用传递,但可以使用
map
或list
模拟。
-
返回值类型:
- 函数可以返回任何类型的值,包括
int
、float
、string
、bool
、map
、list
和any
。 - 如果函数没有返回值,则返回类型为
void
。
- 函数可以返回任何类型的值,包括
-
多返回值: FlexScript 支持多返回值。
-
示例代码:
void modifyValue(int value) { // 值传递 value = 100; } int a = 10; modifyValue(a); print(a); // 输出 10 list<int> modifyList(list<int> numbers) { // 使用列表模拟引用传递 numbers[0] = 100; return numbers; } list<int> myList = [1,2,3]; myList = modifyList(myList); print(myList[0]); // 输出 100 int getValues() { return 1, 2, 3; } int x, y, z = getValues(); print(x, y, z); // 输出 1 2 3
5.3 默认参数和可变参数
-
默认参数:
- 函数可以为参数设置默认值,在调用函数时可以省略带有默认值的参数。
- 默认参数必须位于参数列表的末尾。
-
可变参数:
- 函数可以接受可变数量的参数,使用
...
表示。 - 可变参数在函数内部以
list
的形式访问。
- 函数可以接受可变数量的参数,使用
-
示例代码:
int power(int base, int exponent = 2) { int result = 1; for (int i = 0; i < exponent; i++) { result *= base; } return result; } print(power(3)); // 输出 9 print(power(3, 3)); // 输出 27 int sum(int... numbers) { int total = 0; for (int num : numbers) { total += num; } return total; } print(sum(1, 2, 3, 4, 5)); // 输出 15
5.4 多返回值
-
核心概念: 函数可以同时返回多个值。
-
语法: 在
return
语句中使用逗号分隔多个返回值。 -
接收多返回值: 使用多个变量接收多返回值,变量之间用逗号分隔。
-
示例代码:
int getMinMax(list<int> numbers) { int min = numbers[0]; int max = numbers[0]; for (int num : numbers) { if (num < min) { min = num; } if (num > max) { max = num; } } return min, max; } list<int> data = [5, 2, 8, 1, 9]; int minValue, maxValue = getMinMax(data); print("最小值:" .. minValue); // 输出 最小值:1 print("最大值:" .. maxValue); // 输出 最大值:9