我有這樣的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' –
這只是爲了這個例子。 –