Getting a key as a number

Questions about the LÖVE API, installing LÖVE and other support related questions go here.
Forum rules
Before you make a thread asking for help, read this.
stout
Citizen
Posts: 64
Joined: Sun Oct 07, 2012 4:42 pm

Getting a key as a number

Basic lua question:

Code: Select all

var = { {}, {}, {} }

I want some way to get var[1] to return as the number 1, var[2] to return as the number 2, etc. Is there something built-in to do this, or would I need a complicated function?

grump
Party member
Posts: 644
Joined: Sat Jul 22, 2017 7:43 pm

Re: Getting a key as a number

stout wrote:
Sun Sep 13, 2020 6:36 pm

Code: Select all

var = { {}, {}, {} }

I want some way to get var[1] to return as the number 1, var[2] to return as the number 2, etc. Is there something built-in to do this, or would I need a complicated function?
I'm trying to make sense of your question, but I'm not sure I understand what you mean.
The three tables inside var can be accessed as var[1], var[2], and var[3] as is.

Another interpretation of your question:

Code: Select all

var = { 1, 2, 3 }
But these would be values, not keys.

pgimeno
Party member
Posts: 2318
Joined: Sun Oct 18, 2015 2:58 pm

Re: Getting a key as a number

I don't understand the question either. Maybe he means something like ipairs()?

Code: Select all

for index, value in ipairs(var) do
-- index is the number, value is the contents at that index
print(index .. ": " .. value)
end


stout
Citizen
Posts: 64
Joined: Sun Oct 07, 2012 4:42 pm

Re: Getting a key as a number

Sorry, I should've added a use case. I want to do:

Code: Select all

if var[2] > 1 then
~other stuff

Right now, that won't work, because var[2] is a table. I want to eval that "2" there, as a number.

TheHUG
Citizen
Posts: 59
Joined: Sun Apr 01, 2018 4:21 pm

Re: Getting a key as a number

Only way would be to make var[2] a number rather than a table (see grump's answer)

zorg
Party member
Posts: 2995
Joined: Thu Dec 13, 2012 2:55 pm
Location: Absurdistan, Hungary
Contact:

Re: Getting a key as a number

stout wrote:
Sun Sep 13, 2020 6:36 pm
Basic lua question:

Code: Select all

var = { {}, {}, {} }

I want some way to get var[1] to return as the number 1, var[2] to return as the number 2, etc. Is there something built-in to do this, or would I need a complicated function?
Simple, don't do that and instead do this:

Code: Select all

var = { 1, 2, 3 }

Debugging shall continue when you tell us why that's not acceptable.
Me and my stuff True Neutral Aspirant. Why, yes, i do indeed enjoy sarcastically correcting others when they make the most blatant of spelling mistakes. No bullying or trolling the innocent tho.

sphyrth
Party member
Posts: 225
Joined: Mon Jul 07, 2014 11:04 am
Contact:

Re: Getting a key as a number

Let's expand your code:

Code: Select all

var = {
{}, -- var[1] A Table
{}, -- var[2] Another Table
{}  -- var[3] And yet another Table
}

For now, keep zorg's suggestion:

Code: Select all

var = {
1, -- var[1] a number
2, -- var[2] and so on
3
}


Nikki
Prole
Posts: 25
Joined: Wed Jan 25, 2017 5:42 pm

Re: Getting a key as a number

I am not sure I understand completely,
but do you mean something like this:

Code: Select all

   local var = {10,11,12}

for k,v in ipairs(var) do
print(k,v)
end


which will print
1 10
2 11
3 12

that 'k' here is the key (1,2,3) and the 'v' is the value (10,11,12)

pgimeno
Party member
Posts: 2318
Joined: Sun Oct 18, 2015 2:58 pm

Re: Getting a key as a number

stout wrote:
Sun Sep 13, 2020 7:32 pm
Sorry, I should've added a use case. I want to do:

Code: Select all

if var[2] > 1 then
~other stuff

Right now, that won't work, because var[2] is a table. I want to eval that "2" there, as a number.
The 2 is a value itself. Taken at face value, the answer to your question is:

Code: Select all

if 2 > 1 then
~other stuff

But I have the hunch that this is not what you want.

Try explaining what are the subtables in the table, and what you're trying to accomplish with them.

Who is online

Users browsing this forum: No registered users and 24 guests