如何隐式扩展定义
How will implicitly expand the definition
我有以下代码片段:
override def A: MonadError[F, GenderError] = implicitly
我想知道,编译器将如何扩展定义。
我不确定,但我猜:
def implicitly[F[_]: MonadError[F, GenderError]](implicit e: MonadError[F, GenderError]): T = e
谁能证明一下?
它比那个更通用:
def implicitly[A](implicit x: A) = x
所以它 return 是您要求当前范围的任何类型的隐式值,在本例中 MonadError[F, GenderError]
。
你自己猜
def implicitly[F[_]: MonadError[F, GenderError]](implicit e: MonadError[F, GenderError]): T = e
不是特例,您应该删除上下文绑定并修复 return 类型:
def implicitly[F[_]](implicit e: MonadError[F, GenderError]): MonadError[F, GenderError] = e
我有以下代码片段:
override def A: MonadError[F, GenderError] = implicitly
我想知道,编译器将如何扩展定义。
我不确定,但我猜:
def implicitly[F[_]: MonadError[F, GenderError]](implicit e: MonadError[F, GenderError]): T = e
谁能证明一下?
它比那个更通用:
def implicitly[A](implicit x: A) = x
所以它 return 是您要求当前范围的任何类型的隐式值,在本例中 MonadError[F, GenderError]
。
你自己猜
def implicitly[F[_]: MonadError[F, GenderError]](implicit e: MonadError[F, GenderError]): T = e
不是特例,您应该删除上下文绑定并修复 return 类型:
def implicitly[F[_]](implicit e: MonadError[F, GenderError]): MonadError[F, GenderError] = e