これは私のプロジェクトではタイプ セーフの厄介な違反であるため、無効にする方法を探しています。関数が 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)