尝试存储值的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)
非常感谢任何建议。如果有更好的方法来实现这一目标,请分享。感谢
答案 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]
与for
和foreach
比较,原型应该是这样的
def foreach(f: (A) ⇒ Unit): Unit
因此,如果您想从源数据中获取已更改的数据,请考虑更多有关map
,flatMap
等函数的信息,这些函数将遍历所有数据,如for
和foreach
(yield
除外),但返回值。