Scala Raw Strings: дополнительные вкладки в начале каждой строки - PullRequest
3 голосов
/ 06 января 2010

Я использую необработанные строки, но при печати строки я получаю дополнительные вкладки в начале каждой строки.

val rawString = """here is some text
and now im on the next line
and this is the thrid line, and we're done"""

println(rawString)

это выводит

here is some text
    and now im on the next line
    and this is the thrid line, and we're done

Я пытался установить разные окончания строки, но это не имело никакого эффекта. Я работаю на Mac (OS X tiger), используя jEdit в качестве редактора. Я получаю тот же результат, когда запускаю скрипт в интерпретаторе scala или записываю вывод в файл.

Кто-нибудь знает, что здесь происходит?

1 Ответ

11 голосов
/ 06 января 2010

Эта проблема связана с тем, что в интерпретаторе используются многострочные необработанные строки. Вы можете видеть, что ширина лишних пробелов в точности соответствует размеру scala> или размеру трубы + пробелов, добавленных интерпретатором при создании новой строки, чтобы все выровнялось.

scala> val rawString = """here is some text          // new line
     | and now im on the next line                   // scala adds spaces 
     | and this is the thrid line, and we're done""" // to line things up
// note that the comments would be included in a raw string...
// they are here just to explain what happens

rawString: java.lang.String =
here is some text
       and now im on the next line
       and this is the thrid line, and we're done

// you can see that the string produced by the interpreter
// is aligned with the previous spacing, but without the pipe

Если вы напишите свой код в скрипте Scala и запустите его как scala filename.scala, вы не получите дополнительные вкладки.

В качестве альтернативы вы можете использовать следующую конструкцию в интерпретаторе:

val rawString = """|here is some text
                   |and now im on the next line
                   |and this is the thrid line, and we're done""".stripMargin

println(rawString)

То, что делает stripMargin, - это все, что раньше, включая символ | в начале каждой строки в необработанной строке.

РЕДАКТИРОВАНИЕ: Это известная ошибка Scala - спасибо extempore :)

ОБНОВЛЕНИЕ: Исправлено в Магистраль . Еще раз спасибо extempore :).

Надеюсь, это поможет:)

- Flaviu Cipcigan

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...