Sotto funzione getRandomString
genera una stringa casuale da un elenco di caratteri:si tratta di una pura funzione a 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
È getRandomString
un esempio di una funzione di puro in quanto non modifica lo stato?
"se il suo argomento non cambia tra più chiamate, quindi il suo risultato non cambierà. " - Puoi mostrarci un esempio? Sono abbastanza sicuro che non è vero, ma non posso testarlo perché il tuo codice non viene compilato. –
@ Jörg W Mittag alla tua destra il risultato cambierà, è stata rimossa questa frase. Questo codice non è referenziale trasparente. Questo codice viene compilato per me nel foglio di lavoro con Eclipse Kepler Scala versione 2.11 –
'error: not found: value genRandomInt'. Questo sembra essere un metodo di un binding di Scala MATLAB? Ma non ho MATLAB. –