Lan*_*uhn 7 syntax scala tuples tuple-packing
这是我项目中类型安全的麻烦违规,所以我正在寻找一种方法来禁用它.似乎如果函数采用AnyRef(或java.lang.Object),您可以使用任何参数组合调用该函数,Scala会将参数合并到Tuple对象中并调用该函数.
在我的情况下,该函数不期望一个元组,并在运行时失败.我希望在编译时捕获这种情况.
object WhyTuple {
def main(args: Array[String]): Unit = {
fooIt("foo", "bar")
}
def fooIt(o: AnyRef) {
println(o.toString)
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
(foo,bar)
Run Code Online (Sandbox Code Playgroud)
编译能够解释没有圆括号的方法。所以 fooIt 中的圆括号表示元组。您的调用与以下内容相同:
fooIt( ("foo","bar") )
Run Code Online (Sandbox Code Playgroud)
话虽如此,如果您使用 Some(AnyRef) 或 Tuple1(AnyRef) 等包装器,则可以使该方法排除调用并检索值。