2013-04-15 2 views
2
object RegexImplicits{ 
    implicit class RegexWrapper(r: scala.util.matching.Regex) { 
    def matches(s: CharSequence): Boolean = r.pattern.matcher(s).find 
    } 

    def something(s:String):Boolean = s == "42" 
} 
import RegexImplicits._ 

//This errors with the message 
//<console>:16: error: missing arguments for method matches in class RegexWrapper; 
//follow this method with `_' if you want to treat it as a partially applied function 
//    "a".r.matches _ 
"a".r.matches _ 

//But this works fine... 
something _ 

Почему работает something _, но значение, связанное с неявным классом, отсутствует?Почему частично применяется функция на неявном классе, дающая мне ошибку?

Связано ли это с неявным классом или является красной селедой, и у меня возникает другая проблема?

+1

FYI https://issues.scala-lang.org/browse/SI-3218 (совет Paul Phillips будет работать для вас тоже) –

ответ

3

Оказывается, как указывается om-nom-nom, это известная ошибка в компиляторе scala.

http://issues.scala-lang.org/browse/SI-3218

рекомендации PaulP являются либо использовать точечную свободную форму или окружать _ с помощью скобок.

"a".r matches _ 

или

"a".r.matches(_) 
Смежные вопросы