Scala,我该如何替换静态成员?

时间:2015-07-23 14:30:45

标签: scala oop static

我不想建立一个动物类,我可以找到动物的数量。在Scala中没有静态变量的选项,那么我如何在Scala中实现这样的功能(我正在寻找非特定的解决方案)?

谢谢!

例如在Java中:

public class Amimal {
    static int number_of_aminals = 0;  
    public Animal() {
        number_of_animals++;
    } 
}

2 个答案:

答案 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。

相关问题