【发布时间】:2014-02-26 01:39:25
【问题描述】:
是否可以像这样在 Scala 中提取类型参数:
def some[T <: Either[A, B]](implicit ta: TypeTag[A], tb: TypeTag[B]): T = {
// A =:= String
// B =:= Int
// ...
}
some[Either[String, Int]]()
?
【问题讨论】:
-
为什么不能使用
def some[A, B](implicit ta: TypeTag[A], tb: TypeTag[B]): Either[A, B]的方法? -
@senia 因为原来这是喷雾指令的隐式定义:implicit def someD[T <: either b new fsod ...>
-
您能否提供更多信息?为什么你不能使用
implicit def someD[A, B] = new FSOD[Either[A, B]] { // ... }? -
@senia 你说得对,我可以使用
some[A, B]。谢谢! -
请注意,在某些情况下,像这样显式指定隐式方法的结果类型可能很重要:
implicit def someD[A, B]: FSOD[Either[A, B]] = new FSOD[Either[A, B]] { // ... }。
标签: scala generics types type-systems