-- create class
Account = {balance = 0}
-- constructor
function Account:new (o)
o = o or {}
setmetatable(o, self)
self.__index = self
return o
end
-- method `deposit'
function Account:deposit (v)
self.balance = self.balance + v
end
-- method `withdraw'
function Account:withdraw (v)
if v > self.balance then error"insuficient funds" end
self.balance = self.balance - v
end
-- use example
a = Account:new()
print(a.balance) --> 0
a:deposit(1000.00)
a:withdraw(100.00)
print(a.balance) --> 900
LS0gY3JlYXRlIGNsYXNzCkFjY291bnQgPSB7YmFsYW5jZSA9IDB9CgoKLS0gY29uc3RydWN0b3IKZnVuY3Rpb24gQWNjb3VudDpuZXcgKG8pCiAgbyA9IG8gb3Ige30KICBzZXRtZXRhdGFibGUobywgc2VsZikKICBzZWxmLl9faW5kZXggPSBzZWxmCiAgcmV0dXJuIG8KZW5kCgotLSBtZXRob2QgYGRlcG9zaXQnCmZ1bmN0aW9uIEFjY291bnQ6ZGVwb3NpdCAodikKICBzZWxmLmJhbGFuY2UgPSBzZWxmLmJhbGFuY2UgKyB2CmVuZAoKLS0gbWV0aG9kIGB3aXRoZHJhdycKZnVuY3Rpb24gQWNjb3VudDp3aXRoZHJhdyAodikKICBpZiB2ID4gc2VsZi5iYWxhbmNlIHRoZW4gZXJyb3IiaW5zdWZpY2llbnQgZnVuZHMiIGVuZAogIHNlbGYuYmFsYW5jZSA9IHNlbGYuYmFsYW5jZSAtIHYKZW5kCgoKLS0gdXNlIGV4YW1wbGUKYSA9IEFjY291bnQ6bmV3KCkKcHJpbnQoYS5iYWxhbmNlKSAgICAgIC0tPiAwCmE6ZGVwb3NpdCgxMDAwLjAwKQphOndpdGhkcmF3KDEwMC4wMCkKcHJpbnQoYS5iYWxhbmNlKSAgICAgIC0tPiA5MDA=