定义和调用
函数定义
MCFPP中,函数的定义语法如下:
func functionName(parameter1, parameter2, ...) -> returnType{
#函数体
}func是函数的关键字,functionName是函数的标识符或者说名字,而紧随其后的parameter1, parameter2, ...则是函数的参数列表,returnType是可选的,即函数的返回类型。函数体则是由{}包裹的一系列语句。下面是一个实际的例子:
func add(a as int, b as int) -> int{
return a + b;
}这个函数的名字是add,它有两个整数类型的参数a和b,返回值也是一个整数类型。这个函数的作用是把两个参数相加并返回结果。
若函数没有参数,你可以省略参数列表
func getRandom -> int{
return random(0, 100);
}
func sayHi {
print("hi");
}return
return和Minecraft中的return命令作用相同,都是用于返回函数的返回值。它的语法即为return expression;,其中expression是一个表达式,它的值就是函数的返回值。
如果一个函数定义了返回值类型,那么它的每一个分支都必须有return语句,即函数必定返回一个值。且return语句返回的值必须和函数的返回值类型相同,或者是返回值类型的子类型。
如果一个函数没有定义返回值类型,那么默认为void,即不会返回任何值。这个时候,return语句仍然是可用的,但是它的语法变为return;,即不带任何表达式。它将会起到立刻终止函数运行的作用。
函数的调用
MCFPP中,函数的调用语法和C/Java一样,即functionName(parameter1, parameter2, ...);。其中,functionName是函数的名字,parameter1, parameter2, ...是要传递给函数的参数。下面是一个实际的例子:
func test {
print(add(1, 2)); #上面定义的add函数
}这个例子中,test函数调用了add函数,并传递了两个参数1和2。add函数返回了3,因此test函数将会打印出3。
函数的传参
函数中,对参数的修改不会影响到函数外部的变量。例如:
func test(a as int) {
a = 5;
}
void main {
int a = 0;
test(a);
print(a); #输出0
}在这个例子中,test函数对传入的参数a进行了修改,但是main函数中的a并没有受到影响。