我在不同的scala文件中有各种已定义的对象
例如:
var global:myClass=new myClass("1")
/*...Object1.scala..*/
Object Object1()
{global=new myClass("2")}
/*...Object2.scla..*/
Object Object2()
{global=new myClass("3")}
我需要在所有这些scala对象中定义一个全局对象吗?
如何在scala中执行此操作?
答案 0 :(得分:1)
您的示例存在一些问题,从语法到语义。为了严格的教学目的,我会尽可能地保持尽可能接近的目的 为了定义一个"全球"变量",你想用变量创建一个对象,这个变量将是全局变量,因为这个对象将有一个版本。
scala> class myClass(val myValue : String){}
defined class myClass
scala> object G { var global : myClass = new myClass("1") }
defined object G
scala> G.global.myValue
res0: String = 1
scala> object Object1{G.global = new myClass("2")}
defined object Object1
scala> object Object2{G.global = new myClass("3")}
defined object Object2
scala> G.global.myValue
res1: String = 1
scala> Object1
res2: Object1.type = Object1$@3d630b38
scala> G.global.myValue
res3: String = 2
scala> Object2
res4: Object2.type = Object2$@6a01c21
scala> G.global.myValue
res5: String = 3
您的示例的第二个问题是您尝试使用对象定义来完成工作,这不是一个好方法。对象id中的代码在定义时不会执行,但是您可以通过" stating"来执行此代码。它。建议不要这样做,这只是为了说明如何进行初步试验 在您的代码定义的文件中并不重要,只要您使用全局变量的任何位置,就可以导入对象。