簡體   English   中英

在Scala中將外部類聲明為var時實例化內部類

[英]Instantiating an inner class when outer class declared as a var in Scala

當我將外部類對象聲明為var ,我無法實例化內部類。 但是當我將其作為val ,我沒有收到任何錯誤。 為什么會這樣呢?

class Outer(name : String ) { ter  =>
  class Iner(name : Inner) {
    println("Printing outer class name : " + ter.name )
    println("Printing inner class name : " + name )
  }
}

object OverRiding extends App {
  var outr : Outer = new Outer("Priyaranjan Outer")
  var inner =  new outr.Iner("Priyaranjan Inner")
}

問題在於,在構造函數調用中,引用要實例化的類的表達式必須是穩定的標識符。 語言規范http://www.scala-lang.org/files/archive/spec/2.11/05-classes-and-objects.html#constructor-invocations中的要求

如果查看穩定標識符的定義,您將明白為什么outr必須是val

  • px,其中p是路徑,x是p的穩定成員。 穩定成員是由對象定義或非易失性類型的值定義引入的包或成員。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM