|
Am 20.09.2017 um 13:28 schrieb Luiz Henrique de Figueiredo:
local types = { "nil", "boolean", "number", "string", "table", "function", "userdata", "thread", } is = {} for _,t in pairs(types) do is[t] = function (v) if type(v)~=t then error(t.." expected, got "..type(v),2) end return v end end function f() end x=2 s="a" s=2 f (is.number (x), is.string (s))
I like it! But i still i dont like any prefix solution / funtion call for this task. I would like to write in my sources something like:
f(x.string(), y.number()) or better: f(x.string, y.number)hence we have to modify the metatables for all data types. Each metatable needs only 1 method: string() for string metatable, number() for number metatable and so on. This function should return the value itself. If i call for instance x.string() on a number value, the method is undefined and a error is raised.
May be i dont see the drawbacks of this idea? Ulrich.