Type Of

lua-users home
wiki

Playing around with the concept of a typeof() operator.

When a module is made using the module() function, it adds a value of the module name as metatable._NAME. This function takes advantage of that default behavior. Note: this doesn't apply to C extensions, unless the author specifically adds the value.

function typeof(var)
    local _type = type(var);
    if(_type ~= "table" and _type ~= "userdata") then
        return _type;
    end
    local _meta = getmetatable(var);
    if(_meta ~= nil and _meta._NAME ~= nil) then
        return _meta._NAME;
    else
        return _type;
    end
end
    

RecentChanges · preferences
edit · history
Last edited March 1, 2006 10:47 pm GMT (diff)