存储从每个循环Scala获得的值

时间:2017-07-25 11:00:55

标签: arrays scala foreach

尝试存储值的Scala初学者在Scala foreach循环中获得但是失败了。 基本的foreach循环目前看起来像这样:

order.orderList.foreach((x: OrderRef) => {
   val references = x.ref}))

运行时,此foreach循环将执行两次并每次返回一个引用。我正在尝试捕获它在每次运行时返回的引用值(因此列表或数组形式中的两个引用因此我可以稍后访问这些值)

我真的很困惑如何去做这件事......

我尝试将值检索并存储为数组但是在运行时,数组列表似乎不包含任何值。

这是我的尝试:

val newArray = Array(order.orderList.foreach((x: OrderRef) => {
    val references = x.ref
  }))
  println(newArray)

非常感谢任何建议。如果有更好的方法来实现这一目标,请分享。感谢

2 个答案:

答案 0 :(得分:1)

使用map代替foreach

order.orderList.map((x: OrderRef) => {x.ref}))

此外val references = x.ref也不会返回任何内容。它创建新的局部变量并为其赋值。

答案 1 :(得分:1)

同意答案1,我相信原因如下:

'foreach'或'for'的返回应为'Unit','map'为更改类型的结果,如下例所示:

def map[B](f: (A) ⇒ B): Array[B]

forforeach比较,原型应该是这样的

def foreach(f: (A) ⇒ Unit): Unit

因此,如果您想从源数据中获取已更改的数据,请考虑更多有关mapflatMap等函数的信息,这些函数将遍历所有数据,如forforeachyield除外),但返回值。