这是另一个关于《Scala快学快用》的问题,要求编写一个函数lteqgt(values: Array[Int], v: Int),返回一个三元组,其中包含小于v、等于v和大于v的值的计数。
我的实现方式如下:
我的实现方式如下:
scala> def lteqgt(values: Array[Int], v: Int): (Int, Int, Int) = (values.count(_ < v), values.count(_ == v), values.count(_ > v))
lteqgt: (values: Array[Int], v: Int)(Int, Int, Int)
scala> lteqgt(Array(0,0,1,1,1,2,2), 1)
res47: (Int, Int, Int) = (2,3,2)
问题?
我正在遍历数组3
次以收集计数,有没有一种方法可以在第一次遍历中收集值?一种惯用的方式吗?
while
循环。Scala 不支持 Java 风格的for
循环。Scala 的for
循环会被编译成foreach
/map
。 - Aivean