在 scala 中用循环声明 val

declare val with a loop in scala

我正在学习 scala,我想知道是否可以通过以下方式声明一个 val :

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

而不是

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

如果可以用其他东西替换“0”。

谢谢你

如果你想要用 n 零构建一个 String 值,你可以使用 for 产生字符 0 然后返回 Vector使用mkString转换为字符串,如下所示:

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

然后,您可以通过类似地添加一个参数来概括它:

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

此外,根据@dividebyzero 的评论,您可以使用 *:

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

并定义:

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

scala> aLotOfZeroes(10)
res16: String = 0000000000