Lua table 构造函数中的字符串连接

Lua string concatenation within table constructor

我正在尝试为我的脚本初始化 table 个默认属性,但我遇到了以下情况:

_property_table = {

    k1 = "val1",
    k2 = "val2",
    k3 = k1 .. "val3",

}

print(_property_table.k3)

当尝试在 table 构造函数中连接 k1 时,lua 失败并出现以下错误:

_impl error: [string "main.lua"]:10: attempt to concatenate global 'k1' (a nil value)

这种行为是预期的,还是我遗漏了什么?

我是 Lua 的新手,所以任何关于如何进行的提示或建议都将不胜感激。

谢谢

该行为是预期的:k1 不是变量名,k1 = 只是 table 表达式中 ["k1"] = 的快捷方式。有两种基本解决方案:

  1. 使用一个变量:

    local k1 = "val1"
    _property_table = {
        k1 = k1,
        k2 = "val2",
        k3 = k1 .. "val3",
    }
    
  2. 在table创建后赋值k3

    _property_table = {
        k1 = "val1,
        k2 = "val2",
    }
    _property_table.k3 = _property_table.k1 .. "val3"