Lua 5.x中upvalue的%是否已删除

Lua 5.x中upvalue的%是否已删除,lua,closures,Lua,Closures,我正在从一本有点旧的书上学习Lua。 我尝试过在网上搜索,但由于在搜索中使用了#符号,我得到了令人困惑的结果 它说为了使用upvalue,您需要使用%符号 但是当我在代码中编写它时,我会得到一个错误 Account.new = function (starting_balance) local self = {} local balance = starting_balance self.withdraw = function (v) %balance = %balance

我正在从一本有点旧的书上学习Lua。 我尝试过在网上搜索,但由于在搜索中使用了
#
符号,我得到了令人困惑的结果

它说为了使用upvalue,您需要使用
%
符号

但是当我在代码中编写它时,我会得到一个错误

Account.new = function (starting_balance)
  local self = {}
  local balance = starting_balance

  self.withdraw = function (v)
    %balance = %balance - v;
  end
  return self
end
错误为:
靠近“%”的意外符号


在Lua5.x中有没有一种新的方法来处理向上的值?

自从Lua5.0以来,不再有“向上的值符号”这样的东西了。upvalue是函数声明环境的局部变量,因此可以作为任何其他局部变量进行访问

在您的情况下:只需使用
余额
而不是
%balance

在Lua 5.1中,
%
用作模运算符


一本不错但稍有过时的书是在线版的,当然还有。自从Lua5.0以来,再也没有所谓的“上升值符号”了。upvalue是函数声明环境的局部变量,因此可以作为任何其他局部变量进行访问

在您的情况下:只需使用
余额
而不是
%balance

在Lua 5.1中,
%
用作模运算符

一本好的但稍微过时的书是在线版的,当然,还有。

我会用结尾

我会用结尾

我会用结尾

一定是一本很老的书! lua5.0中删除了
%
as upvalue符号。(2003年发布)

自5.0以来,Lua具有词汇范围; 也就是说,upvalues是自动的:

do
    local balance = 0
    function deposit ( v )
        balance = balance + v
        return balance
    end
end
print ( deposit ( 5 ) )
输出:

5
一定是一本很旧的书! lua5.0中删除了
%
as upvalue符号。(2003年发布)

自5.0以来,Lua具有词汇范围; 也就是说,upvalues是自动的:

do
    local balance = 0
    function deposit ( v )
        balance = balance + v
        return balance
    end
end
print ( deposit ( 5 ) )
输出:

5