Реструктуризующее присваивание

Реструктуризующее (деструктивное) присваивание позволяет определить сразу несколько переменных по каждому элементу массива или объекта.

Для массивов, переменным присваивается значение.

arr = ["a", "b", "c"]
extract(var1, var2, var3) = arr
print var1 // a
print var2 // b
print var3 // c

Что равносильно:

arr = ["a", "b", "c"]
var1 = arr[0]
var2 = arr[1]
var3 = arr[2]

Для объектов, переменным присваивается массив [ключ, значение]

map = {"key1": 1, "test", "text"}
extract(var1, var2) = map
println var1 // [key1, 1]
println var2 // [test, text]

Если нужно пропустить какое-либо значение, название переменной можно не писать:

extract(x, , z) = [93, 58, 90]
println x // 93
println z // 90