End
Начать итерацию заново — и, вопреки ожиданиям, не отдать при этом тик
У end нет полей. Он делает ровно одно: кладёт в @counter число строк программы. Это
за краем, а номер за краем счётчик обнуляет — программа начинается с первой строки.
Нажмите «шаг» четыре раза: итераций станет двойкой, а после останется пустым. Строка ниже
end недостижима — до неё выполнение не доходит никогда.
Программа и без него зациклена
Заголовок раздела «Программа и без него зациклена»Это первое, что стоит понять: end не нужен для того, чтобы программа повторялась. Она
и так начинается заново, когда кончаются строки.
end нужен, когда итерацию надо оборвать раньше: выйти из ветки, не выполнив всё, что
написано ниже.
jump 4 greaterThanEq запас 100set мало 1endset мало 0Без третьей строки обе ветки выполнились бы подряд. Про это — урок «Условие и ветвление».
Тик он не отдаёт
Заголовок раздела «Тик он не отдаёт»Здесь и живёт неожиданность. wait отдаёт остаток тика, а end — нет: он только двигает
счётчик. Если у процессора остались инструкции в запасе, он тут же пойдёт по программе заново,
в том же тике.
Одна и та же программа из одной полезной строки на гиперпроцессоре, 60 тиков:
| Хвост | Итераций за секунду |
|---|---|
| ничего | 1475 |
end |
738 |
wait 0 |
59 |
end вдвое медленнее пустого хвоста ровно потому, что сам считается инструкцией: итерация стала
из одной строки двумя. Никакой паузы он не даёт.
Неофициальный проект, с Anuke не связан. Спрайты, шрифты и переводы Mindustry © Anuke, используются по GPL-3.0; Fira Code — по OFL-1.1. Код сайта — GPL-3.0.