Интерполяция строки 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
Обратите внимание, что этот вопрос отличается от того, почему _ нельзя использовать внутри интерполяции строк? в том, что этот вопрос стремится найти работоспособное решение для интерполяции строк, в то время как предыдущий вопрос гораздо более сфокусирован на внутренностях.
1 ответ
Вы можете использовать явные фигурные скобки:
@ s"${startDt}_${endDt}"
res11: String = "20180405_20180505"
Ваш код:
s"$startDt_$endDt"
не с тех пор startDt_
является допустимым идентификатором, и Scala пытается интерполировать эту несуществующую переменную.