我正在尋找一個 scala 代碼,它為我提供了包含 myArr 中最小和最大數字的新陣列。
我能夠撰寫以下代碼。我如何在單個函式中撰寫它
scala> val myArr = Array(1,5,3)
myArr: Array[Int] = Array(1, 5, 3)
scala> myArr.reduce((a,b) => if(a>b)a else b)
res0: Int = 5
scala> myArr.reduce((a,b) => if(a<b)a else b)
res1: Int = 1
預期輸出:陣列(1,5)
uj5u.com熱心網友回復:
val myArr = Array(1,5,3)
val result = myArr.foldLeft(List.empty[Int]){
case (min :: max :: _, value) if value < min => List(value, max) // lower than the minimun
case (min :: max :: _, value) if value > max => List(min, value) // greater than the maximun
case (Nil, value) => List(value, value) // first value
case (l, _) => l // the final list doesn't need to be updated
}
你可以在這里查看https://scastie.scala-lang.org/XLE8VAKTRhWbl0JFrjGgnw 它使用串列來進行更好的模式匹配。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/440183.html
標籤:斯卡拉
上一篇:scala引數部分應用
