Добавлен uranus
День добрый. Все очень примитивно, своего рода аналог times из Ruby, а если проще, то урезанная версия цикла for. При использовании почему-то срабатывает первая и последняя итерации. Приведенный код завернут в scope.
integer iptr
// 0 ... i-1 => act
define times(i,act) = {
iptr = 0
while (iptr < i) {
act
iptr++
}
}
// i-1 ... 0 => act
define timesr(i,act) = {
iptr = i - 1
while (iptr > 0) {
act
iptr--
}
}
upd. Сразу скажу, что у меня act - это метод. В в карте он принимает число (переменную iptr, т.е. шаг цикла). И результат хоть и должен идти для каждого игрока о 0 до 4, но на деле это не так. Дебаги показывают выполнение именно на 0 и 4.
upd2. Проблема оказалась во вложенном цикле. Т.е. метод вызывал еще один times, потому iptr меняло свое значение.
Сейчас получилось что-то вроде
integer iptr = 0
integer iptrlast, iptrlastbuff
// 0 ... i-1 => act
define times(i,act) = {
iptrlast = iptr
iptr = 0
while (iptr < i) {
act
iptr++
}
iptrlastbuff = iptr
iptr = iptrlast
iptrlast = iptrlastbuff
}
// i-1 ... 0 => act
define timesr(i,act) = {
iptrlast = iptr
iptr = i - 1
while (iptr > 0) {
act
iptr--
}
iptrlastbuff = iptr
iptr = iptrlast
iptrlast = iptrlastbuff
}
Принятый ответ
Проблема решилась, я все написал.
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
uranus
6 лет назад
0
Проблема решилась, я все написал.
Принятый ответ
Чтобы оставить комментарий, пожалуйста, войдите на сайт.