下面是代碼片段,我想避免使用“var”。不確定是否有好的方法來做到這一點
var randomInt = Random.nextInt(100)
private def getRandomInt(createNew:Boolean):Int = {
if(createNew){
randomInt = Random.nextInt(100)
}
randomInt
}
uj5u.com熱心網友回復:
創建一個“無限”Iterator的亂數。next()僅在需要時才前進。
val randomInt = Iterator.continually(Random.nextInt(100)).buffered
private def getRandomInt(createNew:Boolean):Int = {
if (createNew) randomInt.next()
randomInt.head
}
uj5u.com熱心網友回復:
下面的類保存當前的隨機值并提供一種方法來回傳保存下一個隨機值的實體。
它只使用不可變值,盡管 Random.nextInt(...) 函式不是純函式,因為它不會為相同的輸入回傳相同的結果。
該課程是您的 3 個要求的直接翻譯:
- 檢索先前生成的號碼。
- 生成一個新號碼。
- 避免使用“var”。
這說明回傳一個新的不可改變的實體,而不是突變的變數,雖然我找到的基本技術無限迭代答案通過jwvh是一個更優雅的解決方案。
import scala.util.Random
// A random number generator that remembers its current value.
case class RandomInt(size: Int) {
val value = Random.nextInt(size)
def nextRandomInt(): RandomInt = RandomInt(size)
}
// Test case
object RandomInt {
def main(args: Array[String]): Unit = {
val r0 = RandomInt(100)
(0 to 99).foldLeft(r0)((r, i) => {
println(s"[$i] ${r.value}")
r.nextRandomInt()
})
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/316321.html
標籤:斯卡拉
