[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: Indexing a table with nil returns nil?
- From: Patrick Rapin <toupie300@...>
- Date: Thu, 5 Apr 2012 22:59:44 +0200
> It can be useful, for example, to have 'nil propagation' in a chain of table
> accesses without having to check for key validity at each step.
It can also be used to build a table that appears to accept nil or NaN
values as keys !
Something like :
local nilkey, nankey = {}, {} -- unique keys
t=setmetatable({},{
__index=function(t,k)
if k==nil then
return t[nilkey]
elseif k~=k then
return t[nankey]
end
end,
__newindex=function(t,k,v)
if k==nil then
t[nilkey]=v
elseif k~=k then
t[nankey]=v
else
rawset(t,k,v)
end
end})
print(t[1], t[nil], t[0/0]) --> nil nil nil
t[1] = "One"
t[nil] = "Nil!"
t[0/0] = "NaN!"
print(t[1], t[nil], t[0/0]) --> One Nil! Nan!