我从包中导入implicit
函数时遇到问题。
我有一个使用正则表达式在文本中查找内容的类。我想用它作为:
val pattern = "some pattern here".r
pattern findSomethingIn some_text
为此,我定义了一个implicit
finction,以将pattern
转换为包含Wrapper
函数的包装findSomethingIn
package mypackage {
class Wrapper ( val pattern: Regex ) {
def findSomethingIn( text: String ): Something = ...
}
object Wrapper {
implicit def regex2Something( pat: Regex ): Wrapper = new Wrapper( pat )
}
}
如果我用它
import mypackage._
Wrapper.regex2Something( pattern ) findSomethingIn some_text
它有效。而如果我使用
pattern findSomethingIn some_text // implicit should work here??
我得到了
value findPriceIn is not a member of scala.util.amtching.Regex
所以隐式转换在这里不起作用......问题是什么?
答案 0 :(得分:9)
答案 1 :(得分:3)
Brian的回答是最好的,但另一种方法是使用包对象
package object mypackage {
implicit def regex2Something( pat: Regex ): Wrapper = new Wrapper( pat )
}
这将允许您使用原始import mypackage._
行,因为隐式def将在包本身中。
http://www.scala-lang.org/docu/files/packageobjects/packageobjects.html