scala中各种对象的全局对象

时间:2016-08-14 23:31:24

标签: scala

我在不同的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中执行此操作?

1 个答案:

答案 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"来执行此代码。它。建议不要这样做,这只是为了说明如何进行初步试验 在您的代码定义的文件中并不重要,只要您使用全局变量的任何位置,就可以导入对象。