Scala 如何调用persist的Seq变量?

Scala 如何调用persist的Seq变量?,scala,akka,event-sourcing,akka-persistence,Scala,Akka,Event Sourcing,Akka Persistence,在Akka事件序列持久化中,persist方法的预期用途是什么?我看到有这样一个签名: 但是如果我试着像下面的例子那样调用它 def receiveCommand= { case x ⇒ val events = Seq(Event("1"), Event("2")) persist(events) { e ⇒ println(e) // here it gets printed "List(Event(1),Event(2))" } } 我将单个事件打

在Akka事件序列持久化中,
persist
方法的预期用途是什么?我看到有这样一个签名:

但是如果我试着像下面的例子那样调用它

def receiveCommand= {
  case x ⇒
    val events = Seq(Event("1"), Event("2"))
    persist(events) {
      e ⇒ println(e) // here it gets printed "List(Event(1),Event(2))"
    }
}
我将单个事件打印为
列表(事件(1)、事件(2))
。也就是说,我希望按照给定的顺序分别处理每个事件。但是,它看起来像是在下面的
persist
变体中

final def persist[A](event: A)(handler: (A) ⇒ Unit): Unit
类型参数
A
Seq[Event]
替换,而不是被
Event
替换并调用序列变量。使用这种方法的预期方式是什么

谢谢

请注意

  final def persist[A](events: Seq[A])(handler: (A) ⇒ Unit): Unit
需要

  scala.collection.immutable.Seq
作为参数,因此必须传入此具体的Seq类型:

 val events: scala.collection.immutable.Seq = scala.collection.immutable.Seq("event")   
 persist(events) { event =>
     log.debug("persisted " + event) 
 }

persist[Event](events)
有效吗?因此,当您在未指定的情况下编写
Seq(1,2,3)
时,它实际上是一个可变序列?不。事实上,它是一个不可变序列,因为这是scala中的默认序列。但这里的问题是,它不是这样键入的。您可以在源文件顶部导入scala.concurrent.immutable.Seq,以声明所有序列都是不可变的。阿克卡人希望确保seq必须是不可变的,但应该选择不同的方法名以防止混淆。
 val events: scala.collection.immutable.Seq = scala.collection.immutable.Seq("event")   
 persist(events) { event =>
     log.debug("persisted " + event) 
 }