我有希望(字符串,雙)爲參數的Scala的元組不顯示類型不匹配,如果傳遞參數直列
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))
沒有任何錯誤!我不知道這是因爲這裏的隱式轉換嗎?
謝謝,我讀到了關於弱一致性的內容,但仍然模糊了它在這裏的應用。這是將(String,Int)轉換爲(String,Double)的apply方法嗎?轉換究竟如何? – Pham
@Pham:具有指定類型參數的方法'Tuple2.apply [String,Double]'接受'Double'作爲第二個參數,並且可以將'Int'傳遞給接受'Double'的方法:'def test [T](d: T)= d' =>'test [Double]((1:Int))'。 – senia