Как вывести """в" здесь документы "Scala?
В Scala "здесь документы" это начало и конец в 3 "
val str = """Hi,everyone"""
Но что, если строка содержит """
? Как вывести Hi,"""everyone
?
4 ответа
Так как Unicode, выходящий через \u0022
в многострочных строковых литералах вам не помогут, потому что они будут оцениваться как одни и те же три кавычки, ваш единственный шанс - объединить так:
"""Hi, """+"""""""""+"""everyone"""
Хорошо то, что компилятор scala достаточно умен, чтобы это исправить, и поэтому он сделает из него одну единственную строку при компиляции.
По крайней мере вот что scala -print
говорит.
object o {
val s = """Hi, """+"""""""""+"""everyone"""
val t = "Hi, \"\"\"everyone"
}
и используя scala -print
→
Main$$anon$1$o.this.s = "Hi, """everyone";
Main$$anon$1$o.this.t = "Hi, """everyone";
Обратите внимание, что вы не можете ввести его таким образом. Формат, который scala -print
Выводы, похоже, предназначены только для внутреннего использования.
Тем не менее, может быть более простой, более простой способ сделать это.
Это полный взлом, который я разместил на похожем вопросе, но он работает и здесь: используйте XML-структуры Scala в качестве промежуточного формата.
val str = <a>Hi,"""everyone</a> text
Это даст вам строку с тремя двойными кавычками.
Вы не можете использовать тройные кавычки, насколько я знаю. В спецификации, раздел 1.3.5, говорится:
Многострочный строковый литерал - это последовательность символов, заключенная в тройные кавычки """ ... """. Последовательность символов произвольна, за исключением того, что она может содержать три или более символов полезных кавычек только в самом конце. Символы не обязательно должны быть напечатаны; переводы строки и другие управляющие символы также разрешены. Экранирование Unicode работает как и везде, но ни одна из escape-последовательностей в (§1.3.6) не интерпретируется.
Поэтому, если вы хотите вывести три кавычки в строке, вы все равно можете использовать строку в одинарных кавычках с экранированием:
scala> val s = "Hi, \"\"\"everyone"
s: java.lang.String = Hi, """everyone
Ты не можешь
scred heredocs являются необработанными строками и не используют escape-коды, если вам нужны тройные кавычки в строке, используйте конкатенацию строк и добавьте их