什么替代类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的一些东西交互操作。