Відповіді:
Оскільки в groovy немає маркера EOL (наприклад ;
), він заплутається, якщо поставити оператора на наступний рядок
Це буде працювати замість цього:
def a = "test" +
"test" +
"test"
як Groovy аналізатор знає чекати чогось у наступному рядку
Groovy бачить ваш оригінал def
як три окремі заяви. Перші правонаступників test
до a
, другий два рази , щоб зробити "test"
позитивний (і це, де це не вийде )
За допомогою new String
конструкторного методу аналізатор Groovy все ще знаходиться в конструкторі (оскільки дужка ще не закрилася), тому він може логічно об'єднати три рядки разом в одне твердження
Для справжніх рядкових рядків ви також можете використовувати потрійну цитату:
def a = """test
test
test"""
Створимо String з тестом у трьох рядках
Крім того, ви можете зробити його акуратніше:
def a = """test
|test
|test""".stripMargin()
stripMargin
метод буде обрізати лівий (до і включаючи |
символ) з кожного рядка
stripMargin()
.
|
символи на додаткових рядках
"""
рядків
stripIndent()
працювати.
Подібно до stripMargin()
, ви також можете використовувати stripIndent (), як
def a = """\
test
test
test""".stripIndent()
Тому що
Рядок з найменшою кількістю провідних пробілів визначає число, яке потрібно видалити.
Вам також потрібно відступити перший "тест", а не ставити його безпосередньо після inital """
( \
гарантує, що багаторядковий рядок не починається з нового рядка).
Ви можете сказати Groovy, що оператор повинен оцінювати минулий рядок, що закінчується, додавши пару дужок ( ... )
def a = ("test"
+ "test"
+ "test")
Другий варіант - використовувати зворотний проріз \
, в кінці кожного рядка:
def a = "test" \
+ "test" \
+ "test"
FWIW, це ідентично тому, як працюють багаторядкові оператори Python.
def a = b + + "/" + c
. У цьому випадку два + символи, очевидно, є проблемою.