E4141#
此应用形式对于该参数无效,因为它未声明为可选。
当您尝试将可选值转发给函数的参数时,会发生此错误。只有当参数被声明为可选参数时才允许这样做。即使将参数声明为带有默认值的标记参数,也不允许将可选值转发给它。
错误示例#
fn f(opt~ : Int = 4) -> Unit {
println("opt: \{opt}")
}
fn main {
let opt = Some(42)
f(opt?) // Error: This form of application is invalid for argument opt~, because it is not declared with opt? : _.
}
建议#
如果您有权控制要调用的函数,您可以将参数更改为可选参数。
fn f(opt? : Int) -> Unit {
let opt = match opt {
Some(opt) => opt
None => 4
}
println("opt: \{opt}")
}
但是,如果您没有控制权,您可以在将其传递给函数之前解包可选值。
fn main {
let opt = Some(42)
let opt = match opt {
Some(opt) => opt
None => 4
}
f(opt~)
}