4.1. 函数调用
我们在之前的章节中已接触过很多函数,比如常用的内置打印函数 println
。函数调用的一般语法为:
函数名(实参列表)
实参
指函数调用时实际传入的参数,与之对应的是函数声明时定义的形参
,形参只在函数体内有效。凹语言在调用函数时,参数使用值传递,在函数体内对形参值的变更不会影响实参的值,例如:
// 版权 @2023 凹语言 作者。保留所有权利。
func Double(i: i32) => i32 {
i = i * 2
return i
}
func main {
j: i32 = 42
println(Double(j)) // 84
println(j) // 42
}
关键字 return
用于退出函数并返回值,一般语法为:
return 返回值列表
如果函数有多个返回值,应使用 ,
分隔,例如:
func MulRet() => (i32, i32) {
return 42, 13
}
类似于形参,函数声明时可定义具名返回值,例如:
func showAnswer() => (answer: i32) {
answer = 42
return
}
这种写法等价于:
func showAnswer() => i32 {
answer: i32
answer = 42
return answer
}
与其他变量类似,具名返回值以 0 值初始化。假如某个函数需要返回错误码、分支很多并且大多数分支错误码为 0 值,则使用具名返回值写法可以简化代码。
即使声明了具名返回值,return
时仍然可以指定别的值,比如:
// 版权 @2019 凹语言 作者。保留所有权利。
func showAnswer() => (answer: i32) {
answer = 13
return 42
}
func main {
println(showAnswer()) // 42
}
因此我们可以这样来理解:具名返回值实际上是在函数体内定义了一组局部变量,当该函数内的return
语句未指明返回值时,自动将这一组局部变量作为返回值填入。