Это нарезка с форума, где Пётр описывал особенности нового стека движка Instead.
----
== Объявление объектов в stead3.
obj { nam = 'яблоко'; }
Вроде, похоже на stead2? Да, но есть важные отличия.
nam может быть только строкой. Он не может быть функцией. Не может быть булевым значением. Только строка. nam -- однозначный и достаточный идентификатор объекта. Что это значит? После того как вы создали объект, вы всегда можете получить к нему доступ с помощью:
std.ref 'яблоко' или (более кратко) std 'яблоко' или (еще более кратко) _'яблоко'
То-есть, можно написать что-то вроде: _'яблоко'.variable = true
Если вам нравится старый стиль, как это было в stead2, вы можете сделать ссылку при объявлении:
apple = obj { nam = 'яблоко'; } apple.variable = true
Или получить временную/постоянную ссылку позже:
apple = _'яблоко' local a = _'яблоко'
В обработчике вы можете сопоставить объект его имени просто:
use = function(s, w) if w/'яблоко' then p [[Я откусил яблоко.]] end end
Или, конечно, так:
use = function(s, w) if w == _'яблоко' then p [[Я откусил яблоко.]] end end
Итак, nam стал единственным идентификатором. Для отображения объекта в инвентаре используется он-же, или, если вы задали disp -- то disp. disp уже может быть и строкой и функцией (впрочем, как это было и раньше). ... [>>>]