考虑到这一功能:泛型类型的隐式转换?
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
这也正是我问这个问题的原因。我找到了一种解决方法(请参阅下面的答案),但我希望能够解释为什么原始代码无法正常工作。 –