考慮到這一功能:泛型類型的隱式轉換?
def justTrue[T, S](seq: S)(implicit ev: S <:< Seq[T]) = true
justTrue(List(1,2,3))
>> true
它的工作原理。但爲什麼不能將相同的簽名用作隱式轉換?
implicit class TruthTeller[T, S](seq: S)(implicit ev: S <:< Seq[T]) {
def justTrue = true
}
List(1,2,3).justTrue
>> error: Cannot prove that List[Int] <:< Seq[T].
是不是隱式轉換隻是一個函數?
確實很奇怪。 'val a = new TruthTeller(List(1,2,3))'可以。當你移除'type T'並使用'imp ev:S <:
Kigyo
這也正是我問這個問題的原因。我找到了一種解決方法(請參閱下面的答案),但我希望能夠解釋爲什麼原始代碼無法正常工作。 –