【发布时间】:2016-08-12 19:23:11
【问题描述】:
我想使用一个抽象类型 Value 被限制为属于来自 cats 的类型类 Show。
我的第一次尝试是这样的:
package examples
import cats._
import cats.data._
import cats.implicits._
class UsingShow1 {
type Value <: Show[Value] // Not sure if this declaration is right
def showValues(vs: List[Value]): String =
vs.map(implicitly[Show[Value]].show(_)).mkString // Error line
}
但是编译器没有找到隐式参数Show[Value]。
我知道我可以将前面的例子定义为:
class UsingShow2[Value: Show] {
def showValues(vs: List[Value]): String =
vs.map(implicitly[Show[Value]].show(_)).mkString
}
但是,我想知道是否可以使用抽象类型代替类型参数。
【问题讨论】:
标签: scala scala-cats