我試圖找到一種方法來根據所需元素位于第一個位置來在 Scala 中的集合中查找連續元素。我想通過函式式編程來實作這一點,所以我正在努力想出一種方法。
基本上,我有一個串列foo,其中可以包含A,B或C. 'A' 是所需的值,因此必須首先使用 'A',否則結果bar應該為空。
從第一個元素開始,我需要提取連續元素,直到元素值發生變化,然后創建一個新串列bar,其中包含不同元素之前的元素序列。
例如,我想做的是
List('A', 'A', 'B', 'C', 'A', 'B') => List('A', 'A')
同時,如果第一個元素不是A,那么結果List應該是空的
List('B', 'A', 'A', 'C') => List()
我試圖foreach在 List上應用foo并檢查當前元素是否是將其添加到串列中的所需元素,但由于 Scala 不變性(我知道你可以使用 mutable 但我寧愿不使用)我不知道如何跟蹤先前的元素并輸出集合
uj5u.com熱心網友回復:
您可以使用takeWhile:
list.headOption()
.map(el => list.takeWhile(_ == el))
.getOrElse(List())
如果你只想要'A',那么你可以將代碼減少到只有中間行,就像布賴恩的回答一樣。
uj5u.com熱心網友回復:
如果第一個元素總是必須是A,那么takeWhile做你想要的。
scala> List('A', 'A', 'B', 'C', 'A', 'B').takeWhile(_ == 'A')
val res3: List[Char] = List(A, A)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/440181.html
上一篇:狀態函式內部的迭代器為空
下一篇:scala引數部分應用
