我正在从一本书中学习Lua,这本书有点陈旧。
我尝试过在网上搜索,但由于在我的搜索中使用#
符号,我的结果确实令人困惑。
它表示为了使用upvalue,您需要使用%
符号。
但是当我在我的代码中写它时,我得到一个错误。
Account.new = function (starting_balance)
local self = {}
local balance = starting_balance
self.withdraw = function (v)
%balance = %balance - v;
end
return self
end
错误是:unexpected symbol near '%'
在Lua 5.x中有没有新的方法来处理upvalues?
答案 0 :(得分:8)
从Lua 5.0开始,就没有更多的东西了#34; upvalue sign"。 upvalue是声明函数的环境的本地,因此可以像任何其他局部变量一样进行访问。
在您的情况下:只使用balance
代替%balance
。
从Lua 5.1开始,%
被用作模运算符。
一本好但略显过时的书籍是Programming in Lua的在线版本,当然还有reference manual。
答案 1 :(得分:3)
一定是一本很老的书!
在Lua 5.0中删除了%
作为upvalue表示法。 (2003年发布)
5.0以来,Lua有词汇范围; 也就是说,upvalues是自动的:
do
local balance = 0
function deposit ( v )
balance = balance + v
return balance
end
end
print ( deposit ( 5 ) )
输出:
5
答案 2 :(得分:0)