带隐式类型的成员
Type Member w/ Implicit
鉴于:
// type-class
trait Eq[A]
class MyInt
object MyInt {
implicit val myIntEq = new Eq[MyInt] {}
}
sealed trait Something {
type A
implicit val x: Eq[A]
}
case object SomethingImpl extends Something {
override type A = MyInt
override implicit val x = MyInt.myIntEq
}
然后,我使用类型成员的 implicit
via:
scala> def f(s: Something): Eq[s.A] = {
| implicit val x: Eq[s.A] = s.x
| x
| }
f: (s: Something)Eq[s.A]
然而,我的直觉告诉我,必须通过 implicit val ...
将隐式纳入范围有点笨拙。
也许我应该在 Something
的伴随对象中定义 f
函数?
定义此 f
函数的标准方法是什么?
如果你想将某个隐式带入范围,你通常 import
它。
def f(s: Something) = {
import s.x
???
}
鉴于:
// type-class
trait Eq[A]
class MyInt
object MyInt {
implicit val myIntEq = new Eq[MyInt] {}
}
sealed trait Something {
type A
implicit val x: Eq[A]
}
case object SomethingImpl extends Something {
override type A = MyInt
override implicit val x = MyInt.myIntEq
}
然后,我使用类型成员的 implicit
via:
scala> def f(s: Something): Eq[s.A] = {
| implicit val x: Eq[s.A] = s.x
| x
| }
f: (s: Something)Eq[s.A]
然而,我的直觉告诉我,必须通过 implicit val ...
将隐式纳入范围有点笨拙。
也许我应该在 Something
的伴随对象中定义 f
函数?
定义此 f
函数的标准方法是什么?
如果你想将某个隐式带入范围,你通常 import
它。
def f(s: Something) = {
import s.x
???
}