Groovy eachWithIndex несколько операторов - PullRequest
0 голосов
/ 22 мая 2019

Я нашел этот пример https://stackoverflow.com/a/5591274/4587961

но у него есть одно утверждение

def numbers = [ 5, 7, 9, 12 ]
numbers.eachWithIndex{ num, idx -> println "$idx: $num" }

Как выполнить несколько операторов

например

def functionWithMultipleStateements(Object o, int index) {
    int a = 2;
    int b = 3;
    println (a + b)
    println o
    println index
}

numbers.eachWithIndex{ num, idx -> functionWithMultipleStateements "$idx: $num" }

Работает хорошо. Тем не менее, когда я пытаюсь

numbers.eachWithIndex{ num, idx ->  
    {
        int a = 2;
        int b = 3;
        println (a + b) + " " + "$idx: $num"
    }
}

компиляция не удалась. Я не хочу объявлять дополнительную функцию.

1 Ответ

2 голосов
/ 22 мая 2019

следующий код:

[1,2,3,4,5,6,7].eachWithIndex { num, idx ->  
  int a = 2
  int b = 3
  println "${a + b} ${idx}: ${num}"
}

эмулирует ваш пример, работает и выдает следующий вывод:

~> groovy solution.groovy 
5 0: 1
5 1: 2
5 2: 3
5 3: 4
5 4: 5
5 5: 6
5 6: 7

~> 

Вам не нужен второй уровень фигурных скобок. Также в вашем коде вы неправильно написали int как nt, вам не нужны точки с запятой в конце строки, и в общем случае интерполяция шпунтовых строк более читабельна, чем добавление к строке с помощью +.

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