簡體   English   中英

存儲從每個循環Scala獲得的值

[英]Storing values obtained from for each loop 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)

任何建議將不勝感激。 如果有更好的方法可以做到這一點,請分享。 謝謝

使用map代替foreach

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

val references = x.ref也不會返回任何內容。 它創建新的局部變量並為其賦值。

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

“ foreach”或“ for”的返回值應為“ Unit”,而“ map”是類型更改后的結果,如以下示例所示:

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

比較forforeach ,原型應該是這樣的

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

因此,如果您想獲取從源數據map的更改后的數據,請考慮更多有關mapflatMap功能,這些功能將遍歷所有數據,例如forforeach (帶有yield除外),但帶有返回值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM