Устанавливайте переменные динамически, передавая параметры по ссылке в закрытии Groovy - PullRequest
0 голосов
/ 23 ноября 2018

Есть ли способ установить переменную, вызвав замыкание в groovy?VAR1 возвращает 2, но я ожидаю, что оно вернет значение в ячейке I2.

def f_getdata = {ColDesc, ColNum -> 
ColDesc = Float.parseFloat(sheet.getRow(1).getCell(ColNum).getRawValue())}

def VAR1 = 2

f_getdata(VAR1, 8)

1 Ответ

0 голосов
/ 24 ноября 2018

Большинство простых типов (String, Integer, Long, ...) неизменяемы.

Поэтому вы не можете делать то, что описали.

Но если VAL1 будет в контейнере - например, Map - тогда вы можете изменить значения на карте:

def ctx = [
    VAL1:"world"
]
def f_getdata = {ColDesc, ColNum -> 
    ctx[ColDesc] = "hello "+ ctx[ColDesc]
}
f_getdata("VAL1", 8)

println ctx.VAL1

результат:

hello world
...