如何在scala中访问内部类元素
我有一个简单的内部类变量,如何在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
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表示“无法解析符号”。但是当我运行这个程序时,它运行得很好。你能发布有问题的截图吗?