4.1 Циклы
Синтаксис cJass вводит цикл whilenot как аналог часто используемого варианта цикла с предусловием. Способ использования этого цикла аналогичен стандартному: после оператора whilenot следует условие, при выполнении которого цикл завершается:
function test takes integer num, integer pow returns integer
integer res = 1, i = 0
whilenot (i++ >= pow) {
res *= num
}
return res
endfunction
что транслируется в следующее:
function test takes integer num, integer pow returns integer
local integer res = 1
local integer i = 0
loop
exitwhen (i >= pow)
set i = i + 1
set res = res * num
endloop
return res
endfunction
Также, существует запись этого цикла, при которой проверка условия происходит после выполнения свех действий тела:
function test takes integer num, integer pow returns integer
integer res = 1, i = 0
do {
res *= num
} whilenot (i++ >= pow)
return res
endfunction
что ожидаемо выглядит на JASS2 как:
function test takes integer num, integer pow returns integer
local integer res = 1
local integer i = 0
loop
set res = res * num
exitwhen (i >= pow)
set i = i + 1
endloop
return res
endfunction
Кроме того, вы можете использовать ключевое слово do вместо loop — в cJass они взаимозаменяемы.