什么替代类variables在斯卡拉?
在Java中,我有时使用类variables为每个新实例分配一个唯一的ID。 我做类似的事情
public class Foo { private static long nextId = 0; public final long id; public Foo() { id = nextId; nextId++; } [...] }
我如何在Scala中做到这一点?
伴侣对象上的variables:
object Foo{ private var current = 0 private def inc = {current += 1; current} } class Foo{ val i = Foo.inc println(i) }
为了扩大托马斯的答案:
object
定义通常与类放在同一个文件中,并且必须具有相同的名称。 这会产生一个具有类名称的对象的单个实例,其中包含您为其定义的任何字段。
换句话说,一个方便的DIY自己的单身build设工具包。
在JVM级别,对象定义实际上导致定义一个新的类; 我认为这是一个附加$
相同的名称,例如Foo$
。 以防万一你必须与Java的一些东西交互操作。