考慮到這一點的typedef的一個實例:Scala的語法如何創建嵌套情況下類
case class Outer(someVal: Int) {
case class Inner(someOtherVal: Int)
}
我怎樣構建Inner
類型的對象(即我怎樣寫有效階語法)?
我希望Inner
的作用域爲Outer
,以避免在同一個包中與Outer的不同實例發生名稱衝突。
考慮到這一點的typedef的一個實例:Scala的語法如何創建嵌套情況下類
case class Outer(someVal: Int) {
case class Inner(someOtherVal: Int)
}
我怎樣構建Inner
類型的對象(即我怎樣寫有效階語法)?
我希望Inner
的作用域爲Outer
,以避免在同一個包中與Outer的不同實例發生名稱衝突。
內部在外部實例的範圍內。 所以,你可以寫這樣的事情:
val res = new Outer(4)
val res2 = new res.Inner(2)
但是,我不認爲這是你想要的。 爲避免名稱衝突,您可以使用包,它是爲此而設計的。
編輯:
您還可以在外面的同伴對象定義內,像OM-NOM-NOM說:
case class Outer(someVal : Int)
object Outer {
case class Inner(otherVal : Int)
}
val res = Outer(5)
val in = Outer.Inner(6)
請參閱[* type projection *](http://stackoverflow.com/questions/6676048/why-does-one-select-scala-type-members-with-a-hash -instead對的一 - 點) –
您確定要內成爲*例如*類,而不是* class * class(在Java中你寫*靜態*爲後者)?如果沒有,你必須在同伴中定義Inner,否則'val x = Outer(1); x.Inner(2)'將起作用 –