O que substitui variáveis de classe em scala?
em Java, às vezes, uso variáveis de classe para atribuir um ID único a cada instância nova. Eu faço algo como
public class Foo {
private static long nextId = 0;
public final long id;
public Foo() {
id = nextId;
nextId++;
}
[...]
}
Como posso fazer isto em Scala?
38
2 answers
Variáveis sobre o objecto companheiro:
object Foo{
private var current = 0
private def inc = {current += 1; current}
}
class Foo{
val i = Foo.inc
println(i)
}
61
Author: Thomas Jung, 2009-12-11 15:30:18
Para amplificar a resposta do Thomas:
A definição {[[0]} é normalmente colocada no mesmo ficheiro com a classe, e deve ter o mesmo nome. Isto resulta em uma única instância de um objeto que tem o nome da classe, que contém quaisquer campos que você define para ele.
Um kit de construção Singleton, por outras palavras.A nível da JVM, a definição do objecto resulta na definição de uma nova classe; penso que é o mesmo nome com um $
anexo, por exemplo Foo$
. Só para o caso de teres de interoperar algumas destas coisas com Java.
25
Author: Carl Smotricz, 2009-12-11 15:21:42