这在我的项目中是一个麻烦的违反类型安全的行为,所以我正在寻找一种方法来禁用它。似乎如果一个函数采用 AnyRef(或 java.lang.Object),您可以使用任何参数组合调用该函数,Scala 会将参数合并为一个 Tuple 对象并调用该函数。
在我的情况下,该函数不需要元组,并且在运行时失败。我希望这种情况会在编译时被捕获。
object WhyTuple {
def main(args: Array[String]): Unit = {
fooIt("foo", "bar")
}
def fooIt(o: AnyRef) {
println(o.toString)
}
}
输出:
(foo,bar)