Как работает отличный диапазон оператора с другими операторами? Каков приоритет оператора? - PullRequest
1 голос
/ 01 ноября 2019

Я смотрю на короткую строку кода и не могу понять.

Ввод:

1..<2+1+(3..<4)

Вывод:

[1, 2, 3, 4, 5]

Как мне начать разбирать это? 1..<2+1 приводит к [1, 2], что хорошо. Но тогда я не могу понять смысл последней части. Например, откуда взялись 5?

1 Ответ

2 голосов
/ 01 ноября 2019

Интересный пример! Сначала это сбивает с толку, но оператор диапазона имеет низкий приоритет, так что первый оператор диапазона фактически вычисляется последним.

Он оценивается как:

1..< (2 + 1 + (3..<4))

, что в качестве диапазона 3..<4 просто 3, становится

1..< (2 + 1 + 3)

, наконец, давая

1..<6

, что, как вы обнаружили, [1, 2, 3, 4, 5].

Выражение приводит к ошибке времени выполненияесли второй диапазон генерирует список вместо одного значения.

https://ideone.com/YTNBLm

Приоритет оператора Groovy задокументирован здесь: https://groovy -lang.org / operator.html

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