Scala:隐式转换不起作用。

7

我有一个问题,涉及到从包中导入的implicit函数。

我有一个使用正则表达式在文本中查找某些内容的类。我想这样使用它:

val pattern = "some pattern here".r                                          
pattern findSomethingIn some_text                                            

为了实现这一点,我定义了一个 `implicit` 函数,将 `pattern` 转换为包含 `findSomethingIn` 函数的包装器 `Wrapper`。
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               

因此,隐式转换在这里不起作用...问题出在哪里?
2个回答

10
你需要:
import mypackage.Wrapper._

导入适当的方法。

请参见此博客文章以获得更多信息,特别注意Conversions对象的定义/导入。


3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接