如何在scala中访问内部类元素

如何在scala中访问内部类元素,scala,Scala,我有一个简单的内部类变量,如何在scala中访问它 class Outer { class Inner { var x = 1 }} object Main { def main(args: Array[String]): Unit = { val o = new Outer val i = new o.Inner println(i.x) } } 问题是IntelliJ抱怨它无法解析x,但当我运行程序时,它工作正常。您可以简单地使用.mem

我有一个简单的内部类变量,如何在scala中访问它

class Outer {
  class Inner {
    var x = 1
  }}


object Main {
  def main(args: Array[String]): Unit = {
    val o = new Outer
    val i = new o.Inner
    println(i.x)
  }
}

问题是IntelliJ抱怨它无法解析x,但当我运行程序时,它工作正常。

您可以简单地使用
.member\u name
访问scala中的变量。

scala> class Outer {
        class Inner {
          var x = 1 //it can be val which is immutable
        }}
defined class Outer

scala> val o = new Outer
o: Outer = Outer@358b0b42

scala> val i = new o.Inner
i: o.Inner = Outer$Inner@512f2c7d

scala> i.x
res13: Int = 1
因为您的示例将x定义为可变的,所以您可以更改
x
的值

scala> i.x = 100
i.x: Int = 100

scala> i.x
res14: Int = 100
见工作示例-

如果您不需要将Outer定义为类,可以将其定义为singleton,

scala> object Outer {
     |             class Inner {
     |               var x = 1 //it can be val which is immutable
     |             }}
defined object Outer
然后,简单实例化内部变量和访问变量

scala> val inner = new Outer.Inner
inner: Outer.Inner = Outer$Inner@4bcdd11

scala> inner.x
res2: Int = 1

关于不使用intellij,应该可以使用

println(i.x)有什么问题?这很简单,但你能解释一下为什么在IntelliJ中这不起作用吗?谢谢这个例子显然是一个有效的例子。尝试REPL,它有助于学习scala中的小东西。你在intellij中遇到了什么错误?或者intellij显示x是什么。更新您的问题在您的示例中,您正在打印
i
,而不是
i.x
好的,这似乎很奇怪,如果我尝试打印ln(i.x),x标记为红色,IntelliJ表示“无法解析符号”。但是当我运行这个程序时,它运行得很好。你能发布有问题的截图吗?