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

У меня есть класс со многими методами.

class C{
def f1(x:String,....):...=..
def f2(..)...
.
.
.

}

Теперь я хочу, чтобы каждый метод, определенный в моем классе, автоматически получал черту по своему выбору. Что-то вроде создания хитрой неявной или нечто, что украшает каждый метод и, возможно, возвращает экземпляр класса с декорированными методами. Возможно, завернутый или модифицированный или что-то. Я не могу описать больше пути, потому что я не знаю путь. Вы знаете, как это сделать?

1 Ответ

2 голосов
/ 21 июля 2011

Методы не являются функциями, хотя они будут автоматически отменены, когда вы передадите их методу, который требует функцию.См. Также http://jim -mcbeath.blogspot.com / 2009/05 / scala-functions-vs-method.html

Если у вас действительно есть функции:

class C {
  val f1 = (x: String, ...) =>
  val f2 = (...) =>
  ...
}

и вы хотите, чтобы они смешались в черту, например:

class C {
  val f1 = new FunctionN[String, ...] with Gaga {
    def apply(s: String, ...) = ...
  }
  val f2 = new FunctionN[...] with Gaga { ... }
  ...
}

единственный способ, о котором я могу подумать, - это передать ваш класс чему-то вроде Scala-Refactoring: http://scala -refactoring.орг /

...