2011-07-20 36 views
-2

我有很多方法的類。scala自動轉換函數/方法?

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

} 

我現在在我的類中定義的所有方法與我選擇的特徵自動裝飾想要的。 有點像創建一個棘手的隱式礦石,它是裝飾每種方法的東西,並可能用裝飾方法返回該類的一個實例。也許包裹或修改什麼的。我無法描述更多的方式,因爲我不知道方式。 你知道一種方法嗎?

+3

我知道方法不能「裝飾與特質」。 –

+1

這個問題還不夠清楚,無法回答。對於每個X,「自動」選擇Y是否意味着什麼?如果它是自動的,你如何表明你的選擇?你寫的課程有方法但沒有功能。方法不能被特質裝飾。你的用例是什麼? –

回答

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

我能想到的唯一的辦法就是提交你的類到像斯卡拉重構:http://scala-refactoring.org/