【问题标题】:Scala - extract Either type parametersScala - 提取两种类型的参数
【发布时间】: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


【解决方案1】:

你可以这样重写你的方法:

def some[A, B](implicit ta: TypeTag[A], tb: TypeTag[B]): Either[A, B] = ???

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-24
    • 1970-01-01
    • 2012-03-25
    • 2019-10-07
    • 1970-01-01
    • 2012-08-19
    • 2012-09-23
    • 2017-01-30
    相关资源
    最近更新 更多