什么替换scala中的类变量?

时间:2009-12-11 15:15:49

标签: scala static

在Java中,我有时会使用类变量为每个新实例分配唯一的ID。我喜欢

public class Foo {

  private static long nextId = 0;

  public final long id;

  public Foo() {
    id = nextId;
    nextId++;
  }

  [...]

}

我如何在Scala中执行此操作?

2 个答案:

答案 0 :(得分:63)

伴侣对象上的变量:

object Foo{
    private var current = 0
    private def inc = {current += 1; current}
}

class Foo{
    val i = Foo.inc
    println(i)
}

答案 1 :(得分:25)

放大托马斯的回答:

object定义通常与类放在同一个文件中,必须具有相同的名称。这导致一个具有类名称的对象的单个实例,其中包含您为其定义的任何字段。

换句话说,一个方便的自制单身人士构建工具包。

在JVM级别,对象定义实际上导致新类的定义;我认为附加$的名称相同,例如Foo$。万一你必须用Java来互操作这些东西。