使用转义引号,然后在内插字符串中使用大括号
Using an escaped quote and then braces in interpolated string
我正在编写一个(内插)字符串,它具有普遍理解的 {thing}
部分,用户应该将其理解为预期输入的占位符。由于没有前导 $
,我认为花括号会按字面解释。
第一次尝试:花括号
val name = "Michael"
println(s"Hi, $name! Please enter your birthday in the form \"{month} {day}\".")
IntelliJ IDEA 让我没有理由担心。看起来像一个普通的旧字符串:
但是我收到一个错误:
not found: value month
第二次尝试:方括号
好吧,大括号不是个好主意。方括号呢?
val name = "Michael"
println(s"Hi, $name! Please enter your birthday in the form \"[month] [day]\".")
同样,IDEA 的格式让我期望大括号将按字面解释。
但是我收到一个不同的错误:
not found: type month
第三次尝试:删除转义引号
现在我正在抓救命稻草。我会删除转义引号。
val name = "Michael"
println(s"Hi, $name! Please enter your birthday in the form {month} {day}.")
println(s"Hi, $name! Please enter your birthday in the form [month] [day].")
有效!格式不完全符合我的要求,但足以说明问题。
所以,我的问题:为什么?为什么转义双引号会对这些字符串的解释(和编译)产生任何影响?
显然这不会破坏我的编码,但它令人费解且违反直觉(对我而言)。我很想了解幕后发生的事情。
这是 scala 中的一个错误 - escape does not work with string interpolation。
与牙套无关。 scala 认为,该字符串在第一个转义引号之后结束并且找不到以下 month
值
我正在编写一个(内插)字符串,它具有普遍理解的 {thing}
部分,用户应该将其理解为预期输入的占位符。由于没有前导 $
,我认为花括号会按字面解释。
第一次尝试:花括号
val name = "Michael"
println(s"Hi, $name! Please enter your birthday in the form \"{month} {day}\".")
IntelliJ IDEA 让我没有理由担心。看起来像一个普通的旧字符串:
但是我收到一个错误:
not found: value month
第二次尝试:方括号
好吧,大括号不是个好主意。方括号呢?
val name = "Michael"
println(s"Hi, $name! Please enter your birthday in the form \"[month] [day]\".")
同样,IDEA 的格式让我期望大括号将按字面解释。
但是我收到一个不同的错误:
not found: type month
第三次尝试:删除转义引号
现在我正在抓救命稻草。我会删除转义引号。
val name = "Michael"
println(s"Hi, $name! Please enter your birthday in the form {month} {day}.")
println(s"Hi, $name! Please enter your birthday in the form [month] [day].")
有效!格式不完全符合我的要求,但足以说明问题。
所以,我的问题:为什么?为什么转义双引号会对这些字符串的解释(和编译)产生任何影响?
显然这不会破坏我的编码,但它令人费解且违反直觉(对我而言)。我很想了解幕后发生的事情。
这是 scala 中的一个错误 - escape does not work with string interpolation。
与牙套无关。 scala 认为,该字符串在第一个转义引号之后结束并且找不到以下 month
值