【问题标题】:how are the index applied in upvalue + luaupvalue + lua中如何应用索引
【发布时间】:2015-08-29 18:29:21
【问题描述】:

我正在尝试了解如何在 upvalue 中应用索引,但无法做到这一点,导致我在这里问这个问题。

function newCounter ()
  local t = 10
  local n = 0
  local k = 0

  return function ()
    l = t
    k = n
    n = n + 1
    return n
    end
end

counter = newCounter()
counter()
counter()


print("<==============>")
local i = 1

repeat
  name, val = debug.getupvalue(counter, i)
  if name then
    print ("index", i, name, "=", val)
    if (name == "n") then
      debug.setupvalue(counter,2,10)
    end
    i = i + 1
  end -- if
until not name

当我运行这个时,我得到以下 o/p

index   1   _ENV    =   table: 0x7f8203c03ea0
index   2   t   =   10
index   3   k   =   1
index   4   n   =   2

注意:我假设 o/p 是(基于它们初始化的顺序)

index   1   t   =   10
index   2   k   =   1
index   3   n   =   2
index   4   _ENV    =   table: 0x7f8203c03ea0

任何人都可以向我提供有关找到与给定上值关联的正确索引的逻辑方法的信息。

【问题讨论】:

  • 上值的顺序取决于实现。您使用的方法(使用debug.getupvalue 循环)是获得正确索引的唯一方法。

标签: lua


【解决方案1】:

Lua 中的每个块都以_ENV 作为其第一个上值。

【讨论】:

    猜你喜欢
    • 2017-08-10
    • 2016-09-28
    • 1970-01-01
    • 1970-01-01
    • 2010-09-16
    • 2019-10-10
    • 1970-01-01
    • 1970-01-01
    • 2019-10-16
    相关资源
    最近更新 更多