パラメータとして (String, Double) を期待するメソッドがあります
scala> def testTupleType(x: (String, Double)) = {}
testTupleType: (x: (String, Double))Unit
scala> val x: Int = 2
x: Int = 2
次に、パラメーターを次のように testTupleType メソッドに渡そうとします。
scala> val testTuple = ("String", x)
testTuple: (String, Int) = (String,2)
scala> testTupleType(testTuple)
<console>:11: error: type mismatch;
found : (String, Int)
required: (String, Double)
testTupleType(testTuple)
期待どおりのエラーが表示されます。しかし、パラメーターをインラインで渡すと:
scala> testTupleType(("String", x))
エラーはありません!ここでの暗黙的な変換が原因かわかりませんか?