2017-12-31 44 views
0

Im Lern ​​scala und Im fragen, ob es möglich ist, eine val in der folgenden Art und Weise zu erklären:declare val mit einer Schleife in scala

val aLotOfZero : String = for(i<-0 to 63) {"0"} 

statt

var tmp : String = "" 
    for(i<-0 to 63) 
    { 
     tmp += "0" 
    } 
    val aLotOfZero : String = tmp 

Und wenn es möglich ist, zu ersetzen, die "0" von anderen Sachen.

Dank Sie

+1

Was wollen Sie erreichen? Willst du einen String mit 'n'''s erstellen? – nicodp

+1

Neben dem 'yield' für' for' können Sie auch 'Stream.fill (64) ('0')' verwenden, beide benötigen ebenfalls einen '.mkString'. Sie können auch einfach '" 0 "* 64" verwenden. Sehen Sie sich diese sehr ähnliche Frage an. https://stackoverflow.com/questions/31637100/efficiently-repeat-a-character-string-n-times-in-scala – dividebyzero

+0

In diesem Fall wollte ich ein 64-Bit-Wort generieren und dann an eine Nachricht (md5 Algorithmus) – Madaray

Antwort

2

Wenn das, was Sie wollen, ist ein String Wert mit n Nullen zu bauen, könnten Sie ein for verwenden den Charakter 0 Nachgeben und nehmen dann die Rückkehr Vector in einen String mit mkString wie folgt:

scala> val aLotOfZeroes: String = (for (i <- 0 to 63) yield "0").mkString 
aLotOfZeroes: String = 0000000000000000000000000000000000000000000000000000000000000000 

Und dann könnte man es verallgemeinern, indem man einen Parameter ebenfalls hinzugefügt:

scala> def aLotOfZeroes(n: Int): String = (for (i <- 0 to n) yield "0").mkString 
aLotOfZeroes: (n: Int)String 

scala> aLotOfZeroes(10) 
res2: String = 00000000000 

scala> val zeroes: String = aLotOfZeroes(10) 
zeroes: String = 00000000000 

scala> zeroes 
res3: String = 00000000000 

Auch von @ DivideByZero Kommentar, können Sie * verwenden:

scala> "0" * 64 
res13: String = 0000000000000000000000000000000000000000000000000000000000000000 

Und definieren:

scala> def aLotOfZeroes: Int => String = "0" * _ 
aLotOfZeroes: Int => String 

scala> aLotOfZeroes(10) 
res16: String = 0000000000 
+0

Ok danke dir, für meinen Fall ist es eine Lösung – Madaray

Verwandte Themen