雖然與我的私有不可變類構造函數以及輔助構造函數必須作爲第一條語句互相調用的約束作鬥爭,但沒有任何其他類來自作用域中的類,我似乎被約束爲我的實例化使用伴隨對象,並且因爲我的伴侶對象必須訪問主構造函數,所以我需要private關鍵字來定位包含該對象的作用域。我可以在Scala中聲明該類中的伴侶對象嗎?
現在,我的大腦是名代弱,我想通過把班裏的同伴中的對象本身保存一個封閉的命名空間都那個伴侶對象和類的需求,這種方式:
object Group {
private def complexComputeX(z: Int) = z
private def complexComputeY(x: Int, z: Int) = x + z
def apply(z: Int) = {
val x = complexComputeX(z)
val y = complexComputeY(x, z)
new Group(x, y)
}
class Group private[Group](x: Int, y: Int) {
//...
}
}
val x = Group(5)
//...
問題是的private[Group]
沒有引用該對象,但仍然是該類(使其成爲多餘的)。
如何標記該構造函數在伴隨對象級別可用,但不在外部?
PS:那個伴侶對象已經讓我頭疼,我甚至寧願剛纔的類,EN-作用域那裏complexCompute
,這幾個構造函數的實現可能需要...
編輯:好的。就在添加標籤時,我碰到一個神經元,我發現伴侶對象可能對類的範圍有一些特權。它可以訪問它的私有部分,所以我可以在沒有專門的封閉範圍的情況下簡單地擁有對象和類。然而,我保持這個問題,對於可能的方式來處理這樣的拳擊案例範圍的迴應object Main {object Main {object Main...
以及關於僅具有沒有任何伴隨對象的類中的構造函數的技術的評論的機會。
更改了原來的問題「我們如何引用Scala中的外部範圍?」。如果我找到另一個嘗試的理由(我敢打賭,當層級具有相同的名稱時,沒有辦法精確指定私有層面),我想我會單獨詢問它。 – Nirvana 2014-12-13 22:05:42