有没有一种方法可以在所有对象之间共享变量(由同一类型实例化)?考虑下面的简单程序。两个对象namename2具有相同的类型A。有没有办法在两个实例化properyListname内连接name2

class A {
  var properyList = List[String]()
  def printProperties(): Unit = {
    println(properyList)
  }
}

object Experiment {
  def main(args: Array[String]): Unit = {
    val name = new A
    val name2 = new A
    name.properyList = List("a property")
    name.printProperties()
    name2.printProperties()
  }
}


输出是

List(a property)
List()


有什么方法可以更改类定义,以便仅更改其中一个对象中的.properyList即可在所有实例中更改它?

最佳答案

您似乎在寻找类似Java静态字段的内容。

在scala中,您通常可以通过使用随播对象来实现类似目的:

object Main extends App {
  class A {
    import A._

    def printProperties(): Unit = {
      println(properyList)
    }
  }

  object A {
    private var properyList = List[String]()

    def addProperty(prop: String): Unit = {
      properyList ::= prop
    }
  }


  val name = new A
  val name2 = new A
  A.addProperty("a property")
  name.printProperties()
  name2.printProperties()
}

10-05 19:37