考虑到隐式类"必须在另一个特征/类/对象内部定义"1,如何全局定义隐式转换?
情况是我想向应用程序中的所有Strings
(或Lists
)添加一个方法,或者至少添加到它的几个包中。
无论是在Java中还是在Scala中,都不能在"全局"范围内添加任何东西。但是,在 Scala 中可以定义 package objects
,它可以包含在整个包中使用的方法,并且可以由用户轻松导入。
这看起来像这样:在目录中foo/bar/baz
创建一个名为 package.scala
的文件,其中包含以下内容:
package foo.bar
package object baz {
implicit def incrediblyUsefulConversion(s: String) = ...
}
然后,用户可以在其代码中执行以下操作来激活转换:
import foo.bar.baz._
或者也许
import foo.bar.baz.incrediblyUsefulConversion
当然,您也可以像任何其他用户一样在其他包中使用自己的代码。