Skip to content

定义和调用

MCFPP函数的定义方式和C/Java有较大的区别,而更加接近于Python的语法。

函数定义

MCFPP中,函数的定义语法如下:

mcfpp
func functionName(parameter1, parameter2, ...) -> returnType{
    #函数体
}

func是函数的关键字,functionName是函数的标识符或者说名字,而紧随其后的parameter1, parameter2, ...则是函数的参数列表,returnType是可选的,即函数的返回类型。函数体则是由{}包裹的一系列语句。下面是一个实际的例子:

mcfpp
func add(int a, int b) -> int{
    return a + b;
}

这个函数的名字是add,它有两个整数类型的参数ab,返回值也是一个整数类型。这个函数的作用是把两个参数相加并返回结果。

return

return和Minecraft中的return命令作用相同,都是用于返回函数的返回值。它的语法即为return expression;,其中expression是一个表达式,它的值就是函数的返回值。

如果一个函数定义了返回值类型,那么它的每一个分支都必须有return语句,即函数必定返回一个值。且return语句返回的值必须和函数的返回值类型相同,或者是返回值类型的子类型。

如果一个函数没有定义返回值类型,那么默认为void,即不会返回任何值。这个时候,return语句仍然是可用的,但是它的语法变为return;,即不带任何表达式。它将会起到立刻终止函数运行的作用。

函数的调用

MCFPP中,函数的调用语法和C/Java一样,即functionName(parameter1, parameter2, ...);。其中,functionName是函数的名字,parameter1, parameter2, ...是要传递给函数的参数。下面是一个实际的例子:

mcfpp
func test(){
    print(add(1, 2));  #上面定义的add函数
}

这个例子中,test函数调用了add函数,并传递了两个参数12add函数返回了3,因此test函数将会打印出3

函数的传参

函数中,对参数的修改不会影响到函数外部的变量。例如:

mcfpp
func test(int a){
    a = 5;
}

void main(){
    int a = 0;
    test(a);
    print(a);   #输出0
}

在这个例子中,test函数对传入的参数a进行了修改,但是main函数中的a并没有受到影响。