我不想建立一个动物类,我可以找到动物的数量。在Scala中没有静态变量的选项,那么我如何在Scala中实现这样的功能(我正在寻找非特定的解决方案)?
谢谢!
例如在Java中:
public class Amimal {
static int number_of_aminals = 0;
public Animal() {
number_of_animals++;
}
}
答案 0 :(得分:2)
您可以为案例类创建一个作为单例的伴随对象:
case class Animal(name:String) {
Animal.incrementAnimal
}
object Animal {
def incrementAnimal = ...
}
但是,请注意,遵循上述方法将要求您使用可变变量(由var
定义的变量而不是val
),这在Scala中是不鼓励的。因此,您可能希望重新访问您的设计以使用不可变值。
答案 1 :(得分:1)
一种选择是:
import Animal
class Animal {
Animal.increment()
}
object Animal {
private[this] var _count = 0
def increment(): Unit = { _count += 1 }
def count: Int = _count
}
虽然你可能想使用AtomicInt。