Jens Stuber
Jens Stuber

Reputation: 75

lua table constructor with keys containing spaces

i know i can construct tables like this:

local t= {
    first = "value1",
    second = "value2"
}

and i now i can use keys containing spaces like t["some key"] = "some value" but is there a way to construct table like above with keys containing spaces? I tried a few things, but i only goit errors

Upvotes: 5

Views: 1630

Answers (2)

Piglet
Piglet

Reputation: 28994

local t= {
    first = "value1",
    second = "value2"
}

Is syntactic sugar for

local t= {
    ["first"] = "value1",
    ["second"] = "value2"
}

This convenient syntax only works for names. Lua names may only consist of letters, numbers and underscore and they must not start with a number.

As a valid Lua identifer may not contain a space you cannot use the syntactic sugar. Hence the only way to do this is to use the full syntax

local t = {["hello world"] = 1}

This also applies to indexing that table field. So the only way is t["hello world"]

Upvotes: 5

luther
luther

Reputation: 5564

You can declare any expression as a key in a table constructor by putting it in brackets:

local t = {
  ["some key"] = "some value",
  [234567 + 2] = "other value",
}

Upvotes: 9

Related Questions