Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Scala中实现具有静态自增成员的类?_Scala - Fatal编程技术网

如何在Scala中实现具有静态自增成员的类?

如何在Scala中实现具有静态自增成员的类?,scala,Scala,我想使用Scala实现一个类,如下所示: class Ref(name: String, size: Int) 如果我想在这个类中添加一个静态成员,我需要添加一个componion对象: object Ref { private var id: Int = 0 } 然后,当我创建一个对象,比如val ref=new ref(“something”,20),我应该如何让成员“id”可以自我增加(比如id=id+1)?您可以增加主构造函数内的计数器 object Ref { var id

我想使用Scala实现一个类,如下所示:

class Ref(name: String, size: Int)
如果我想在这个类中添加一个静态成员,我需要添加一个componion对象:

object Ref {
  private var id: Int = 0
}

然后,当我创建一个对象,比如val ref=new ref(“something”,20),我应该如何让成员“id”可以自我增加(比如id=id+1)?

您可以增加主构造函数内的计数器

object Ref {
  var id: Int = 0
}

class Ref {
   Ref.id = Ref.id + 1 
}

您可以增加主构造函数内的计数器

object Ref {
  var id: Int = 0
}

class Ref {
   Ref.id = Ref.id + 1 
}

使用
AtomicInteger
避免id值递增的并发错误

object Ref {
  private val id = new AtomicInteger()

  def next = id.incrementAndGet()
}

class Ref(name: String, size: Int) {
  val id = Ref.next
}

使用
AtomicInteger
避免id值递增的并发错误

object Ref {
  private val id = new AtomicInteger()

  def next = id.incrementAndGet()
}

class Ref(name: String, size: Int) {
  val id = Ref.next
}