scala自动转换功能/方法?

时间:2011-07-20 23:37:48

标签: scala traits

我有一个有很多方法的课。

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

}

我现在想要在我班级中定义的每个方法都自动装饰我选择的特征。 有点像创建一个棘手的隐含矿石的东西,它装饰每个方法,并可能返回带有装饰方法的类的实例。也许包装或修改或其他东西。我无法描述更多的方式因为我不知道的方式。  你知道这样做的方法吗?

1 个答案:

答案 0 :(得分:2)

方法不是函数,但是当它们传递给需要函数的方法时,它们会自动被提升。另请参阅http://jim-mcbeath.blogspot.com/2009/05/scala-functions-vs-methods.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.org/