一個簡單的方法是將其初始化爲null
。要做到這一點,你需要指定一個類型,Array[Int]
和使(而不是val
),它var
,這樣你以後可以改變它:
class Foo() {
var array: Array[Int] = null // how do I leave initialization till later?
def initializeArray(size : Int) = array = Array.ofDim[Int](size)
}
然而,這是不是在斯卡拉非常好的做法。這可能是最好使用Option
:
class Foo() {
var array: Option[Array[Int]] = None // how do I leave initialization till later?
def initializeArray(size : Int) = array = Some(Array.ofDim[Int](size))
}
這是告訴用戶,明確,有可能是array
可以不設定任何目標,並避免NullPointerException
秒。您可以在StackOverflow或其他地方閱讀關於Option
的更多信息。
最後,斯卡拉最好的設計依靠不可變的類。在這種情況下,您會推遲創建Foo
,直到您確實知道要放入什麼爲止。但是,如果不瞭解設計的其他內容,很難說如何最好地設置它。
編輯:根據您的描述,我會將您的設計分爲兩部分:解析文件的方法以及用於存儲最終結果的不可變的Foo
。
然後,你可以只說:
val foo = Foo.fromFile(filename)
和foo
將是一個完整的,不可改變的Foo
。
來源
2012-04-14 02:18:42
dhg
爲什麼你需要離開初始化到以後?這可能比「稍後初始化」有更好的解決方案。 – 2012-04-15 02:28:22