在 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
我正在学习 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