Запись в ячейку
Одна строка, три поля — и значение переживает и итерацию, и правку программы, и сам процессор
write — это read наоборот. Поля стоят в том же порядке, и первое из них теперь значит
«что записать»:
write итераций cell1 0Счётчик здесь живёт не в переменной, а в памяти: итерация начинается с того, что программа достаёт прошлое значение, и кончается тем, что кладёт новое.
Зачем так, если есть переменная
Заголовок раздела «Зачем так, если есть переменная»В этом примере — незачем: переменная справилась бы сама. Разница видна, когда программу трогают.
| Что случилось | Переменная | Ячейка |
|---|---|---|
| прошла итерация | помнит | помнит |
| программу отредактировали | обнулилась | помнит |
| процессор снесли и поставили заново | обнулилась | помнит |
| смотрит другой процессор | не видит | видит |
Правка программы обнуляет переменные не по злому умыслу: процессор пересобирает их заново из текста, и старых значений взять неоткуда. Ячейка — отдельный блок, и до неё это не дотягивается.
Границы те же, что у чтения
Заголовок раздела «Границы те же, что у чтения»| Адрес | Что будет |
|---|---|
2.9 |
запись в место 2: дробная часть отбрасывается |
64 у ячейки |
ничего: строка выполнится, память не изменится |
-1 |
то же самое — ничего |
Одно место — одно значение
Заголовок раздела «Одно место — одно значение»Запись затирает то, что лежало по адресу, целиком. Ни «добавить к тому, что было», ни «записать половину места» нельзя: чтобы увеличить число в памяти, его сначала читают.
read счёт cell1 0op add счёт счёт 1write счёт cell1 0Три строки вместо одной — обычная цена памяти. Поэтому счётчик, который нужен только внутри итерации, держат в переменной, а в память кладут то, что должно её пережить.
Неофициальный проект, с Anuke не связан. Спрайты, шрифты и переводы Mindustry © Anuke, используются по GPL-3.0; Fira Code — по OFL-1.1. Код сайта — GPL-3.0.