我有一个有很多方法的课。
class C{
def f1(x:String,....):...=..
def f2(..)...
.
.
.
}
我现在想要在我班级中定义的每个方法都自动装饰我选择的特征。 有点像创建一个棘手的隐含矿石的东西,它装饰每个方法,并可能返回带有装饰方法的类的实例。也许包装或修改或其他东西。我无法描述更多的方式因为我不知道的方式。 你知道这样做的方法吗?
答案 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/