Используйте функцию как метод класса - PullRequest
0 голосов
/ 08 ноября 2011

Я пытаюсь выяснить, как использовать функцию в качестве члена класса, но не могу понять правильный синтаксис. Я получаю ошибку компиляции:

test.scala:11: error: missing arguments for method extra in class RichString;
follow this method with `_' if you want to treat it as a partially applied function
println("This is".extra);

Как сохранить extra как функцию, определенную вне класса RichString, и использовать ее для расширения класса String?

Спасибо.

test.scala:

class RichString(a: String) {
  def extra(a: String):String
}

def extra(a: String): String = {
  return a+" Extra!";
}

implicit def string2Rich(s: String) = new RichString(s);

println("This is".extra);

1 Ответ

1 голос
/ 08 ноября 2011

Это то, что вы хотите?

scala> class RichString(a: String) {
     |   def extra = a + "extra"
     | }
defined class RichString

scala> implicit def enrichString(s: String) = new RichString(s)
enrichString: (s: String)RichString

scala> println("this is".extra)
this isextra
...