[Date Prev][Date Next][Thread Prev][Thread Next]
- Subject: Re: Asking a variable its name
- From: Jose Torre-Bueno <jtorrebueno@...>
- Date: Tue, 19 Nov 2013 05:59:37 -0800
On Nov 19, 2013, at 5:07 AM, Rena <firstname.lastname@example.org> wrote:
> This looks like a misunderstanding of table indexing. tricktable.a is equal to tricktable['a'] - you're already creating a string here; it has nothing to do with any variable named a. You could change that name to anything else and it'll come back the same.
Yes of course but if strict is on and I want to use the
something = a_global_if_it_exists or the_default_value
construction, I would need to write
something = rawget(_G['a_global_if_it_exists']) or the_default_value
I was hoping to write a simple function that let strict know I don't want to throw an error if I test for a possibly non existent global so I could write:
something = ifexists(a_global_if_it_exists) or default_value
and get the global if it existed or the default value.
What I take from this is the only way to do this is to call as a string so:
function ifexists(g) return rawget(_G[g]) end
something = ifexists('a_global_if_it_exists') or default_value
you are correct that at any point in the code I know what the name of a variable is and can get to it w/o a trip through __index, I guess my objection is aesthetic it seems like there should be a way to ask a variable its name. As you point out I can go from a string to a table member with t['a'], it just seems like I should be able to go the other way.