Возвращает уникальный идентификатор объекта: ресурса, виджета и т.д. Реализован для всех типов ResourceId и для WidgetSafe (базовый тип для widget-ов). Уникальный идентификатор объекта имеет тип light userdata. Гарантируется, что один и тот же объект всегда имеет один и тот же уникальный идентификатор.
Замечание: для одного и того же объекта его представления в виде (обычного) идентификатора - (full) userdata - могут отличаться, т.е. один и тот же объект может представляться различными идентификаторами (с точки зрения сравнения на равенство операторами Lua).
Замечание: уникальный идентификатор - light userdata - не может быть использован для непосредственного доступа к объекту через функции Lua API. Для этого необходимо использовать его (обычный) идентификатор - (full) userdata.
-- класс
Метод имеется у пользовательских ресурсов и виджетов ResourceId.
-- семантика
function GetInstanceId( self )
-- входные параметры:
self: WidgetSafe (not nil) или ResourceId (not nil) - объект одного из поддерживаемых типов
-- возвращаемое значение:
light userdata - уникальный идентификатор или nil в случае ошибки
-- примеры:
local isWidgetsEqual = widget1:GetInstanceId() == widget2:GetInstanceId()
local isSpellsEqual = spellResourceId1:GetInstanceId() == spellResourceId2:GetInstanceId()
local index = {}
index[widget1:GetInstanceId()] = widget1
index[widget2:GetInstanceId()] = widget2
function GetWidgetById( instanceId )
return index[instanceId]
end
local isKnownWidget = GetWidgetById( widget:GetInstanceId() ) != nil