2012-08-01 14 views
6

Mam problem z funkcją implicit, zaimportowaną z paczki.scala: niejawna konwersja nie działa

Mam klasę, która używa Regex, aby znaleźć coś w tekście. Chciałbym używać go jako:

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

Aby to zrobić, ja zdefiniować implicit finction przekonwertować pattern do owinięcia Wrapper który zawiera findSomethingIn funkcja

package mypackage {               

    class Wrapper (val pattern: Regex) {          
    def findSomethingIn(text: String): Something = ...      
    }                   

    object Wrapper {               
    implicit def regex2Something(pat: Regex): Wrapper = new Wrapper(pat) 
    }                   

}                    

jeśli używać go jako

import mypackage._               

Wrapper.regex2Something(pattern) findSomethingIn some_text     

to działa. natomiast w przypadku korzystania

pattern findSomethingIn some_text // implicit should work here??    

uzyskać

value findPriceIn is not a member of scala.util.amtching.Regex    

więc niejawna konwersja nie działa tutaj ... Na czym polega problem?

Odpowiedz

9

Musisz

import mypackage.Wrapper._ 

importować odpowiednie metody.

Aby uzyskać więcej informacji, zobacz this blog entry, aw szczególności definicję/import obiektu Conversions.

Powiązane problemy