Scala字符串插值和求值表达式

Scala字符串插值和求值表达式,scala,string-interpolation,Scala,String Interpolation,我正在深入研究Scala的字符串插值功能,我想知道使用它是否安全。字符串插值允许我们计算表达式,如: println(s"Hello World! ${for (i <- 1 to 100) println(s"other values $i")}") println(s)“Hello World!${for(i我永远不会使用它,我也不希望我的同事使用它 有两件事基本上是错的: 字符串插值是一个很好的特性,因为它使值的串联易于读取……除非您将整个scala程序都粘贴在其中:) 这里不仅

我正在深入研究Scala的字符串插值功能,我想知道使用它是否安全。字符串插值允许我们计算表达式,如:

println(s"Hello World! ${for (i <- 1 to 100) println(s"other values $i")}")

println(s)“Hello World!${for(i我永远不会使用它,我也不希望我的同事使用它

有两件事基本上是错的:

  • 字符串插值是一个很好的特性,因为它使值的串联易于读取……除非您将整个scala程序都粘贴在其中:)
  • 这里不仅有一个复杂的表达式,还有一个副作用,所以在计算插值的过程中,会打印出100个值

    other values 1
    other values 2
    ...
    other values 100
    Hello World! ()
    
其中,
()
是用于理解的单元的返回值,即
单元

我会省去我自己(和我的同事)巨大的头痛,只要这样做就行了

println(s"Hello World!")
for (i <- 1 to 100) {
  println(s"other values $i")
}
println(s“你好,世界!”)

因为(我我永远不会使用它,我也不希望我的同事使用它

有两件事基本上是错的:

  • 字符串插值是一个很好的特性,因为它使值的串联易于读取……除非您将整个scala程序都粘贴在其中:)
  • 这里不仅有一个复杂的表达式,还有一个副作用,所以在计算插值的过程中,会打印出100个值

    other values 1
    other values 2
    ...
    other values 100
    Hello World! ()
    
其中,
()
是用于理解的单元的返回值,即
单元

我会省去我自己(和我的同事)巨大的头痛,只要这样做就行了

println(s"Hello World!")
for (i <- 1 to 100) {
  println(s"other values $i")
}
println(s“你好,世界!”)

对于(我认为这在语法上是正确的,但看起来很难看。你确定你会在生产环境中使用这段代码并乐意维护它吗?这是安全的。我不想在生产环境中看到这样的代码。但我无法解释其他开发人员为什么不应该这样做。你是在问是否有一些实际的scala代码会出现在这个评估中?代码类别等等?在这种情况下,我会假设如果评估失败,可能会出现问题,无法解决复杂的问题。但不确定是否实用。这在语法上是正确的,但看起来非常难看。你确定你会在生产中使用此代码并乐于维护它吗?这是安全的。我不想在生产中看到这样的代码。但我无法解释让其他开发人员明白为什么他们不应该这样做。你是在问这个评估中是否会有一些实际的scala代码?代码生成等?在这种情况下,我假设如果评估失败,可能会有一个复杂的问题。但不确定是否可行。字符串插值是否与普通的旧字符串串联执行相同?String串接速度稍快,因此如果这是您的瓶颈,请使用它而不是插值。在大多数使用情况下,差异可以忽略不计,但-一如既往-根据您的要求决定。请参阅字符串插值的性能是否与普通的旧字符串串接相同?字符串串接速度稍快,如果这是您的瓶颈eck,使用它而不是插值。在大多数用例中,差异可以忽略不计,但是-一如既往-根据您的需求来决定。请参阅