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 不直接支持引用传递,但可以使用 maplist 模拟。
  • 返回值类型:

    • 函数可以返回任何类型的值,包括 intfloatstringboolmaplistany
    • 如果函数没有返回值,则返回类型为 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