我有希望(字符串,双)为参数的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