Poniżej funkcji getRandomString
generuje losowy ciąg z listy znaków:Jest to czysta funkcja w Scala
def genRandomInt(lb: Int, ub: Int) = {
val rnd = new scala.util.Random
lb + rnd.nextInt(ub)
}
def getRandomString(validChars: List[Char]) = {
val size = validChars.size
val random = new scala.util.Random
val stringBuilder = new StringBuilder
val rnd = genRandomInt(0, size)
val sb = new StringBuilder
for (i <- 0 to size - 1) {
val rnd = genRandomInt(0, size)
sb.append(validChars(rnd))
}
sb.toString
} //> getRandomString: (validChars: List[Char])String
val rs = getRandomString(('a' to 'j').toList)
//> rs : String = aghdjjhjge
Is getRandomString
przykładem czystej funkcji, gdyż nie zmienia stanu?
„, jeśli jego argumentem nie zmienia się między wieloma połączeniami, a jego wynik nie ulegnie zmianie. " - Możesz pokazać przykład tego? Jestem prawie pewien, że to nieprawda, ale nie mogę tego przetestować, ponieważ twój kod się nie kompiluje. –
@ Jörg W Mittag Twoje prawa wynik się zmieni, ive usunięte to zdanie. Ten kod nie jest referencyjny przezroczysty. Ten kod jest dla mnie kompilowany w arkuszu kalkulacyjnym przy użyciu Eclipse Kepler Scala w wersji 2.11 –
'error: not found: value genRandomInt'. To wydaje się być metodą z wiązania Scala MATLAB? Ale nie mam MATLAB. –