2012-08-01 122 views
6

我从包中导入的函数implicit有问题。scala:隐式转换不起作用

我有一个类,使用正则表达式来查找文本中的东西。我想用它作为:

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

要做到这一点,我定义implicit finction到pattern转换为包含包装WrapperfindSomethingIn功能

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    

所以隐式转换不会在这里工作......这是什么问题?

回答

9

您需要

import mypackage.Wrapper._ 

导入适当的方法。

有关更多信息,请参阅this blog entry,并特别注意Conversions对象的定义/导入。