我正在深入研究Scala的字符串插值功能,我想知道它是否安全使用它。字符串插值允许我们评估表达式,如:
println(s"Hello World! ${for (i <- 1 to 100) println(s"other values $i")}")
我怀疑是否应该在插值字符串中计算表达式。我看到很多Scala代码,其他开发人员正在使用此功能,例如,并不知道这是否正确和安全。
答案 0 :(得分:4)
我永远不会使用它,我不希望我的同事使用它。
基本上有两件事情是关闭的:
不仅那里有复杂的表达式,而且你还在使用副作用,因此在评估插值过程中会打印100个值。所以你得到了
other values 1
other values 2
...
other values 100
Hello World! ()
()
是for-comprehension的返回值,即Unit
。
我会为自己(以及我的同事们)带来巨大的麻烦而且只是做着
println(s"Hello World!")
for (i <- 1 to 100) {
println(s"other values $i")
}