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

oop*_*psi 1 lua closures

我正在从一本书中学习Lua,这本书有点陈旧.我试过在网上搜索,但由于#在我的搜索中使用了这个标志,我得到了令人困惑的结果.

它说,为了使用upvalue你需要使用%标志.

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

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

  self.withdraw = function (v)
    %balance = %balance - v;
  end
  return self
end
Run Code Online (Sandbox Code Playgroud)

错误是: unexpected symbol near '%'

是否有一种新的方法来处理Lua 5.x中的upvalues?

jpj*_*obs 8

从Lua 5.0开始,就没有"upvalue sign"这样的东西了.upvalue是声明函数的环境的本地,因此可以像任何其他局部变量一样简单地访问.

在你的情况下:只需使用balance而不是%balance.

从Lua 5.1开始,%用作模运算符.

一本好但略显过时的书是Lua编程的在线版本,当然还有参考手册.