2
我是Scala新手,我注意到了一個我不明白的行爲。當我執行這個代碼一切順利就好了:從List [Int]到List [Double]的隱式轉換失敗
val lD: List[Double] = List(1, 2, 3)
然而,當我執行這一個:
val lI = List(1, 2, 3)
val lD: List[Double] = lI
我得到一個錯誤
<console>:11: error: type mismatch;
found : List[Int]
required: List[Double]
可以請你給我一個線索,爲什麼隱式轉換不會在第二個列表中發生?
啊,我明白了。謝謝!這意味着'lD:List [Double] = List(1,2,3)'僅僅因爲根據目標類型進行輸入而成功了(所以類型推理器會發現'List(1,2,3)'必須是'List [Double]'),而不是因爲'List [Int]'可以隱式轉換爲'List [Double]',對嗎? –
它成功了,因爲我在il2dl對象中定義並導入了自己的隱式轉換。在定義它之前,不存在這種轉換。需要進口才能將其納入範圍。 –
是的,我知道。然而,即使沒有定義隱式轉換,賦值'lD:List [Double] = List(1,2,3)'也是可能的 - 這僅僅是因爲類型推理器將'List(1,2,3)'視爲'List [雙](1,2,3)'? –