我有这样的Scala代码,吐出了独特的随机数为意大利彩票:不可改变的斯卡拉收藏
object Enalotto {
def main(args: Array[String]): Unit = {
val numbers = scala.collection.mutable.SortedSet[Int]()
val r = scala.util.Random
while(numbers.size < 6) {
numbers += r.nextInt(90) + 1
}
for ((number, index) <- numbers.view.zipWithIndex) {
if(number < 10) print("0")
print(number)
if(index < 5) print(" - ")
}
println("")
}
}
我想问一下,你会怎么写同样的程序有一个不变的集合,更适当的功能风格编程?
在此先感谢。
为什么你要在这里使用一成不变的收藏?这是可能的(例如递归,因为你不知道原始集合的大小),但不会被证明是合理的,至少不会在'while'循环中。 –
一个可能的解决方案(如果用'+ ='替换'+ +),也可以使用可变集合:'Stream.iterate(collection.immutable.SortedSet [Int]())(_ +(util.Random.nextInt )+ 1))。dropWhile(_。size <6).head' –
这只是为了这个例子。 –