Lua表构造函数中的字符串拼接

我正在尝试为我的脚本初始化默认属性表,并面临以下情况:

_property_table = {

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

}

print(_property_table.k3)

当我尝试在表构造函数中拼接k1时,Lua会失败并出现以下错误:

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

这个行为是期望的吗?还是我漏掉了什么?

我对Lua相当新,所以任何有关如何进行的提示或建议都将不胜感激。

谢谢

点赞
用户573255
用户573255

这种行为是可以预料的:k1不是一个变量名,k1=仅仅只是表达式中["k1"]=的简写。有两种基本的解决方案:

  1. 使用一个变量:
local k1 = "val1"
_property_table = {
    k1 = k1,
    k2 = "val2",
    k3 = k1 .. "val3",
}
  1. 在表格创建完成之后分配k3
_property_table = {
    k1 = "val1",
    k2 = "val2",
}
_property_table.k3 = _property_table.k1 .. "val3"
2020-05-10 13:58:08