2017-08-26 84 views
3

嗨,我有一個泛型+ T和+ U的特質。元組推理失敗

def test[I >: T, V >: U](e: Traversable[I], f: V) 
def test[I >: T, V >: U](e: (Traversable[I], V)) 
def test[I >: T, V >: U](e: Tuple2[Traversable[I], V]) 

第一個工作正常。 最後2但這兩個吐了出來:

type mismatch; 
[error] found : (String, Int) 
[error] required: (Traversable[?], ?) 

爲什麼不階推斷第二和第三實例的類型?我錯過了什麼?

謝謝

回答

1

這看起來像一個編譯器bug。在第一種情況下,我沒有看到它能將String轉換爲Traversable的原因,但沒有看到其他兩種情況。

0

此代碼Scala中2.12.3編譯沒有錯誤:

trait MyTrait[+T, +U] { 
    def test[I >: T, V >: U](e: Traversable[I], f: V) 
    def test1[I >: T, V >: U](e: (Traversable[I], V)) 
    def test2[I >: T, V >: U](e: Tuple2[Traversable[I], V]) 
} 
+2

當調用'TEST1發生編譯錯誤(( 「你好」,42))'上的'MyTrait [字符,INT]' 。 –

+1

就是這樣。也許它是一個版本特定的錯誤? – Vangogh500