在编译时指定法律和/或非法隐含?

时间:2015-09-20 15:08:33

标签: scala implicit

假设我有两个特定的object,我可以从中检索导入。假设两个对象都有我想要使用的多个有用的导入。为简单起见,我只包括1:

scala> object Implicits1 { implicit def good: String => Int = _ => 42 }
defined object Implicits1

scala> object Implicits2 { implicit def bad: String => Int = _ => 666 }
defined object Implicits2

然后,给定foo

scala> def foo(x: Int): Int = x
foo: (x: Int)Int

我执行我的通配符导入以获取含义:

scala> import Implicits1._
import Implicits1._

scala> import Implicits2._
import Implicits2._

在REPL上运行foo(".")表示隐式Implicits2.bad已解决:

scala> foo(".")
res0: Int = 666

但是,我实际上想要Implicits1.good,而不是Implicits2.bad

som-snytt和Shadowlands教会我如何处理通配符导入 - Wildcard Import, then Hide Particular Implicit?

但是,我可以在编译时指定允许或禁止特定的隐含吗?

0 个答案:

没有答案