You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Scala字符串插值含下划线报错问题求助(Scala2.11.8+Spark2.2)

解决Scala字符串插值中$startDt_$endDt的报错问题

嘿,我太懂你遇到的这个小坑了!在Scala的字符串插值语法里,下划线_属于合法的变量名组成部分,所以当你写s"$startDt_$endDt"时,Scala会误以为你要引用一个名为startDt_的变量——但你根本没定义这个变量,自然就报错啦。

给你两种简单的解决办法:

方法一:用大括号明确变量边界(推荐)

把插值变量用${}包裹,这样就能清晰区分变量名和后面的下划线:

val startDt = "20180405"
val endDt = "20180505"
val targetStr = s"${startDt}_$endDt"
println(targetStr) // 输出:20180405_20180505

这种写法既简洁又符合Scala字符串插值的最佳实践,以后遇到变量名后面跟符号、字母的情况都可以这么用。

方法二:拆分字符串拼接

如果你觉得大括号不习惯,也可以把下划线单独作为字符串的一部分拼接起来:

val startDt = "20180405"
val endDt = "20180505"
val targetStr = s"$startDt" + "_" + s"$endDt"

不过这种写法相对繁琐,更推荐第一种方法。

另外提一句,你用的Scala 2.11.8版本完全支持这种大括号的写法,放心用就好~

内容的提问来源于stack exchange,提问作者user9074332

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:40:58