Интерполяция строки 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 пытается интерполировать эту несуществующую переменную.

Другие вопросы по тегам