Scala 字符串插值和求值表达式
Scala string interpolation and evaluate expression
我正在研究 Scala 的字符串插值功能,我想知道使用它是否安全。字符串插值允许我们计算如下表达式:
println(s"Hello World! ${for (i <- 1 to 100) println(s"other values $i")}")
我怀疑我们是否应该计算内插字符串中的表达式。我看到很多 Scala 代码,其中其他开发人员在示例中使用此功能,但不知道这是否正确和安全。
我永远不会使用它,也不希望我的同事使用它。
有两件事本质上是错误的:
- 字符串插值是一个很好的特性,因为它使值的连接更容易阅读...除非你把整个 Scala 程序放在那里:)
不仅那里有一个复杂的表达式,而且您正在使用副作用,因此在计算插值的过程中将打印 100 个值。所以你得到
other values 1
other values 2
...
other values 100
Hello World! ()
其中()
是for-comprehension的return值,即Unit
.
我会为自己(和我的同事)省去巨大的麻烦,然后就去做
println(s"Hello World!")
for (i <- 1 to 100) {
println(s"other values $i")
}
我正在研究 Scala 的字符串插值功能,我想知道使用它是否安全。字符串插值允许我们计算如下表达式:
println(s"Hello World! ${for (i <- 1 to 100) println(s"other values $i")}")
我怀疑我们是否应该计算内插字符串中的表达式。我看到很多 Scala 代码,其中其他开发人员在示例中使用此功能,但不知道这是否正确和安全。
我永远不会使用它,也不希望我的同事使用它。
有两件事本质上是错误的:
- 字符串插值是一个很好的特性,因为它使值的连接更容易阅读...除非你把整个 Scala 程序放在那里:)
不仅那里有一个复杂的表达式,而且您正在使用副作用,因此在计算插值的过程中将打印 100 个值。所以你得到
other values 1 other values 2 ... other values 100 Hello World! ()
其中()
是for-comprehension的return值,即Unit
.
我会为自己(和我的同事)省去巨大的麻烦,然后就去做
println(s"Hello World!")
for (i <- 1 to 100) {
println(s"other values $i")
}