lua-users home
lua-l archive

Re: lua tables/keys

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


On Wed, Mar 12, 2008 at 3:06 PM, Alexandr Leykin <leykina@gmail.com> wrote:
> How to know to be a key in lua table? Without use pairs/ipairs/next?
>
> a = {a,b,c,d}
>
> a.a => nil, but key "a" present in table!
> a.f => nil, but key "f" not in table!
>
> Than differ a.a and a.f??? (a.a - key in the table a, a.f - not)
Your terminology is a bit confused. In this case, a b c and d are
values in the table, not keys. The above constructor is equivalent to
a = {[1] = a, [2] = b, [3] = c, [4] = d}. In this case, 1, 2, 3 and 4
are the keys, while a, b, c and d are the values.
That being said, you can test if something is a key in the table by
simply indexing the table:
if type(tbl[key]) ~= nil then
 -- The key exists in the table.
end
There is no fast way to check to see if a value is used in a table.
You would need to resort to the following search, or design a better
data structure using tables:
function valueExists(tbl, value)
 for k,v in pairs(tbl) do
 if value == v then
 return true
 end
 end
 return false
end
Perhaps you could be more specific about your concern or problem.
- Jim

AltStyle によって変換されたページ (->オリジナル) /