2011-07-20 8 views
-2

私は多くのメソッドを持つクラスを持っています。scala auto関数/メソッドを自動変換しますか?

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

} 

私のクラスに定義されているすべてのメソッドが自動的に私の選択の特性で飾られたかったと思います。 トリッキーな暗黙の鉱石を作成して、すべてのメソッドを装飾し、おそらく装飾されたメソッドを持つクラスのインスタンスを返すものが好きです。おそらくラップされたり、変更されたり、何か。私は方法を知らないので、方法の詳細を記述することはできません。 あなたはそれを行う方法を知っていますか?

+3

私は方法は、「形質に飾ら」することはできません知っています。 –

+1

質問に答えるほど明確ではない。すべてのXが自分の選択したYを「自動的に」持つことは、どういう意味ですか?自動であれば、どのようにあなたの選択を示していますか?書かれたクラスにはメソッドがありますが、機能はありません。メソッドは、特性によって装飾することはできません。あなたのユースケースは何ですか? –

答えて

2

メソッドは関数ではありませんが、メソッドは関数を必要とするメソッドに渡すと自動的に解除されます。

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 { ... } 
    ... 
} 

私は考えることができる唯一の方法は、あなたのクラスを提出しているあなたが本当に機能を持っている場合もhttp://jim-mcbeath.blogspot.com/2009/05/scala-functions-vs-methods.html

を参照してください。 Scalaの-リファクタリングのようなものに:http://scala-refactoring.org/

関連する問題