VEX语法指南

2022-04-25 13:57:54 浏览数 (2)

1.1自定义函数

函数定义与C类似,包含返回类型、函数名、参数列表和代码块。

当参数列表中参数的类型相同可以使用逗号分隔,而无需单独声明类型,其它类型参数使用分号分隔。

代码语言:javascript复制
int test(int a, b; string c) {
    if (a > b) {
        printf(c);
    }
}

函数支持重载,参数类型或数量不同、返回类型不同都将得到支持。

代码语言:javascript复制
void print(basis b) { 
    printf("basis: { i: %s, j: %s, k: %s }n", b.i, b.j, b.k); 
} 
void print(matrix m) { 
    printf("matrix: %sn", m); 
} 
void print(bases b) { 
    printf("bases <%s> {n", b.description); 
    printf("  "); print(b.m); 
    printf("  "); print(b.n); 
    printf("  "); print(b.o); 
    printf("}n"); 
} 

basis rotate(basis b; vector axis; float amount) { 
    matrix m = 1; 
    rotate(m, amount, axis); 
    basis result = b; 
    result.i *= m; 
    result.j *= m; 
    result.k *= m; 
    return result; 
} 
void rotate(basis b; vector axis; float amount) { 
    b = rotate(b, axis, amount); 
} 

也可以对函数使用function关键字以避免歧义。

代码语言:javascript复制
function int test(int a, b; string c) {
    if (a > b) {
        printf(c);
    }
}

要点:

  • 自定义函数必需在使用前声明。
  • 自定义函数由编译器内联,故不支持递归,可使用着色器调用替代。
  • 可使用const关键字声明参数为只读。可通过export关键字将参数声明为输出参数。
  • 一个函数可以有多个return语句。
  • 可以访问全局变量,建议将全局变量以参数的形式传入自定义函数中。
  • 支持嵌套函数。

0 人点赞