在Java中,我有时会使用类变量为每个新实例分配唯一的ID。我喜欢
public class Foo {
private static long nextId = 0;
public final long id;
public Foo() {
id = nextId;
nextId++;
}
[...]
}
我如何在Scala中执行此操作?
答案 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来互操作这些东西。