• my_hat_stinks
    link
    fedilink
    arrow-up
    6
    ·
    6 hours ago

    That’s slightly misleading, I think. There are no arrays in Lua, every Lua data structure is a table (sometimes pretending to be something else) and you can have anything as a key as long as it’s not nil. There’s also no integers, Lua only has a single number type which is floating point. This is perfectly valid:

    local tbl = {}
    local f = function() error(":(") end
    
    tbl[tbl] = tbl
    tbl[f] = tbl
    tbl["tbl"] = tbl
    
    print(tbl)
    -- table: 0x557a907f0f40
    print(tbl[tbl], tbl[f], tbl["tbl"])
    -- table: 0x557a907f0f40	table: 0x557a907f0f40	table: 0x557a907f0f40
    
    for key,value in pairs(tbl) do
      print(key, "=", value)
    end
    -- tbl	=	table: 0x557a907f0f40
    -- function: 0x557a907edff0	=	table: 0x557a907f0f40
    -- table: 0x557a907f0f40	=	table: 0x557a907f0f40
    
    print(type(1), type(-0.5), type(math.pi), type(math.maxinteger))
    -- number	number	number	number