據我瞭解,斯卡拉如果我創建使用new
關鍵字類,並按照類名稱與一個構造函數創建一個匿名類:Scala:我可以用工廠方法重現匿名類的創建嗎?
class MyClass {
def doStuff() {
// ...
}
}
val mc = new MyClass {
doStuff()
}
的好處是,在構造函數中的所有代碼屬於新對象的範圍。
有沒有一種方法可以重現此類語法,其中類是由工廠方法創建的而不是new
關鍵字?即使下面的代碼工作:
val mf = new MyFactory
val mc = mf.MyClass {
doStuff()
}
我找不到辦法做到這一點,但斯卡拉有這麼多,它可能很容易!
使用的import
通過@Ricky的建議之下,我可以得到:
val mf = MyFactory;
val mc = mf.MyClass
{
import mc._
doStuff()
}
(在需要的塊前的空行),但代碼塊不是構造函數。
你只是希望能夠添加語句(在你的例子一樣'doStuff()')來運行或整個場definit離子?前者很容易通過傳遞一個call-by-need塊,後者聽起來非常棘手...... – Owen
我希望能夠在正在創建的對象範圍內自動添加代碼,無論是調用方法還是訪問字段。 –