参数与默认值
opt<T> 参数
参数的可选性统一用 opt<T> 表达:
func hello(name: opt<string>) -> string {
if name is some(v) {
`hello ${v}`
} else {
"hello"
}
}
这些调用都合法:
hello()
hello("Alice")
hello(some("Alice"))
hello(none)
默认值
默认值必须是编译期可确定表达式:
func repeat(text: string, count: int = 1) -> string {
text
}
规则:
- 默认值不允许依赖前面的参数
- 默认值能唯一推导类型时,参数类型可以省略
= none这类情况必须显式写出opt<T>类型
位置参数中的省略
尾部参数可以省略的情况:
- 参数类型是
opt<T> - 参数带默认值
具名参数中的省略
具名参数函数中:
- 未给默认值的非
opt<T>参数必填 opt<T>参数可不传,不传时为none- 带默认值的参数可不传,不传时取默认值
- 未知参数和重复参数都是编译错误