【问题标题】:Lua string concatenation within table constructor表构造函数中的 Lua 字符串连接
【发布时间】:2020-05-10 12:49:50
【问题描述】:

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

_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 还很陌生,所以任何关于如何继续的提示或建议都将不胜感激。

谢谢

【问题讨论】:

    标签: constructor lua string-concatenation lua-table


    【解决方案1】:

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

    1. 使用变量:

      local k1 = "val1"
      _property_table = {
          k1 = k1,
          k2 = "val2",
          k3 = k1 .. "val3",
      }
      
    2. 创建表后分配k3

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

    【讨论】:

    • 谢谢,我继续按照你描述的第二种方法。
    猜你喜欢
    • 1970-01-01
    • 2018-04-30
    • 2010-10-05
    • 1970-01-01
    • 2020-03-25
    • 2023-03-17
    • 1970-01-01
    • 2021-11-29
    • 1970-01-01
    相关资源
    最近更新 更多