使用 Scala 2.12,我使用模式匹配回圈陣列以創建一個新陣列,如下所示。
val arrNew=arrText.map {
case x if x.startsWith("A") =>x.substring(12, 20)
case x if x.startsWith("B") =>x.substring(21, 40)
case x => "0"
}.filter(_!="0")
如果元素與兩種模式之一匹配,則新元素將添加到新陣列中arrNew。不匹配的將被丟棄。我的代碼實際上arrText使用過濾器回圈了兩次。如果我不包含case x =>"0",則會出現錯誤,抱怨某些元素未匹配。下面的代碼是回圈一次的唯一方法嗎?有什么辦法可以只回圈一次case匹配?
map { x =>
if (condition1) (output1)
else if (condition2) (output2)
}
uj5u.com熱心網友回復:
您可以使用 collect
[用例] 通過將部分函式應用于定義函式的此序列的所有元素來構建新集合。
val arrNew=arrText.collect {
case x if x.startsWith("A") =>x.substring(12, 20)
case x if x.startsWith("B") =>x.substring(21, 40)
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/384759.html
上一篇:Log4J漏洞是否會影響Snowflake的Snowpark庫?SLF4J是否在Snowparkapi中的任何一點充當Log4J的外觀?
下一篇:使用隱式型別證據滿足型別約束
