从 LUA 中的相同 table 检索属性

Retrieve an attribute from the same table in LUA

我想知道是否可以在同一数组中检索 table 的属性。例如这里我想检索数组的 "list.index" 属性,怎么办?

{
category_title = "Weapon",
description = nil,
type = "list",
list = {items = {"Give", "Remove"}, index = 1},
style = {},
action = {
   onSelected = function()
      if list.index == 1 then
         -- it's 1
      else
         -- it's 2
      end
   end
},

创建 table 时无法在另一个条目中使用一个条目。

但是既然你定义了一个函数,你可以这样做:

   onSelected = function(self)
      if self.list.index == 1 then
         -- it's 1
      else
         -- it's 2
      end
   end

只需确保使用 table 作为参数调用 onSelected。

或者,您可以在构造 table 之后设置函数,以便能够将 table 作为上值访问(而不是利用 table 构造函数):

local self = {
   categoryTitle = "Weapon",
   description = nil,
   type = "list",
   list = {items = {"Give", "Remove"}, index = 1},
   style = {},
   action = {}
}
function self.action.onSelected()
   if self.list.index == 1 then
      -- it's 1
   else
      -- it's 2
   end
end

这样,您将 self 作为上值,不需要将其作为参数传递。