带下划线的 Scala 字符串插值
Scala String Interpolation with Underscore
我是 Scala 的新手,所以请随时向我指出文档的方向,但我无法在我的研究中找到这个问题的答案。
我正在使用 scala 2.11.8 和 Spark2.2 并尝试使用插值创建一个包含 dateString1_dateString2(带下划线)的动态字符串,但有一些问题。
val startDt = "20180405"
val endDt = "20180505"
这似乎有效:
s"$startDt$endDt"
res62: String = 2018040520180505
但这失败了:
s"$startDt_$endDt"
<console>:27: error: not found: value startDt_
s"$startDt_$endDt"
^
我希望这个带有转义的简单变通方法能够工作,但没有产生预期的结果:
s"$startDt\_$endDt"
res2: String = 20180405\_20180505
请注意,此问题与 Why can't _ be used inside of string interpolation? 的不同之处在于,此问题旨在寻找可行的字符串插值解决方案,而前一个问题更侧重于 scala 的内部结构。
您可以使用大括号显式表示:
@ s"${startDt}_${endDt}"
res11: String = "20180405_20180505"
您的代码:
s"$startDt_$endDt"
失败,因为 startDt_
是一个有效的标识符,并且 scala 试图插入那个不存在的变量。
我是 Scala 的新手,所以请随时向我指出文档的方向,但我无法在我的研究中找到这个问题的答案。
我正在使用 scala 2.11.8 和 Spark2.2 并尝试使用插值创建一个包含 dateString1_dateString2(带下划线)的动态字符串,但有一些问题。
val startDt = "20180405"
val endDt = "20180505"
这似乎有效:
s"$startDt$endDt"
res62: String = 2018040520180505
但这失败了:
s"$startDt_$endDt"
<console>:27: error: not found: value startDt_
s"$startDt_$endDt"
^
我希望这个带有转义的简单变通方法能够工作,但没有产生预期的结果:
s"$startDt\_$endDt"
res2: String = 20180405\_20180505
请注意,此问题与 Why can't _ be used inside of string interpolation? 的不同之处在于,此问题旨在寻找可行的字符串插值解决方案,而前一个问题更侧重于 scala 的内部结构。
您可以使用大括号显式表示:
@ s"${startDt}_${endDt}"
res11: String = "20180405_20180505"
您的代码:
s"$startDt_$endDt"
失败,因为 startDt_
是一个有效的标识符,并且 scala 试图插入那个不存在的变量。