I’m learning Lua from a book, which is a bit old.
I’ve tried searching the web, but because of the use of the # sign in my search I get really confusing results.
It says that in order to use upvalue you need to use the % sign.
But when I write it in my code I get an error.
Account.new = function (starting_balance)
local self = {}
local balance = starting_balance
self.withdraw = function (v)
%balance = %balance - v;
end
return self
end
error is : unexpected symbol near '%'
Is there a new way to handle upvalues in Lua 5.x ?
Since Lua 5.0, there is no more such thing as a “upvalue sign”. An upvalue is a local to the environment a function is declared in, and as such can simply be accessed as any other local variable.
In your case: just use
balanceinstead of%balance.From Lua 5.1,
%is used as modulo operator.A good but slightly outdated book is the online available version of Programming in Lua, and of course, the reference manual.