Scala列表转换和地图应用程序

时间:2015-05-11 20:26:27

标签: scala

我正在努力做一些表面上应该相当简单的事情。我正在尝试将Java列表转换为Scala列表,然后使用map方法将函数应用于每个元素,然后返回新元素的列表。

我添加了额外的类型信息以尝试确认最新情况。

class Incidents extends AggregateBase {

  def toEvent(entry: EventStoreEntry) = entry.event match {

    case  "raised" =>  buildRaised(entry)

  }

  def buildRaised(entry: EventStoreEntry): IncidentsEventRaised = {

    return new IncidentsEventRaised(entry)
  }
}

def getAll(aggregateName: String, aggregateId: String): List[EventInstanceBase] = { 

    val aggregate = new Incidents()

    val entries:List[EventStoreEntry] = accessor.findAll(aggregateName, aggregateId).all().asScala.toList

    return entries.map((e:EventStoreEntry) => aggregate.toEvent(e)).asInstanceOf[List[EventInstanceBase]]
}

我遇到以下异常:

java.lang.ClassCastException:scala.runtime.BoxedUnit无法强制转换为EventInstanceBase

任何人都可以解释发生了什么吗?感谢

2 个答案:

答案 0 :(得分:1)

尝试为此提供显式返回类型:

def toEvent(entry: EventStoreEntry)

答案 1 :(得分:0)

删除{{1}}关键字。它的行为与java不同 - 它通过抛出NonLocalReturn异常来展开堆栈,在这种情况下会破坏你的地图调用。

不应在scala文件中使用return关键字。