lua的私有性(privacy)

Lua 没有打算被用来进行大型的程序设计,相反,Lua 目标定于小型到中型的程序设计,通常是作为大型系统的一部分。

典型的,被一个或者很少几个程序员开发,甚至被非程序员使用。所以,Lua避免太冗余和太多的人为限制。如果你不

想访问一个对象内的一些东西就不要访问(If you do not want to access something inside an object, just do not do it.)。

 1  function  newAccount (initialBalance)
 2 
 3       local  self  =  {balance  =  initialBalance}
 4 
 5       local  withdraw  =   function  (v)
 6 
 7         self.balance  =  self.balance  -  v
 8 
 9       end
10 
11       local  deposit  =   function  (v)
12 
13         self.balance  =  self.balance  +  v
14 
15       end
16 
17       local  getBalance  =   function  ()  return  self.balance  end
18 
19       return  {
20 
21         withdraw  =  withdraw,
22 
23         deposit  =  deposit,
24 
25         getBalance  =  getBalance
26 
27      }
28 
29  end
30 
31 
32  acc1  =  newAccount( 100.00 )
33 
34  acc1.withdraw( 40.00 )
35 

36 print(acc1.getBalance())    --> 60 

 

转载于:https://www.cnblogs.com/orez88/articles/2134634.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Lua 中,可以使用闭包(closure)来模拟私有字段,从而实现面向对象编程中的封装。所谓私有字段,指的是只能在类内部访问的字段,外部无法直接访问或修改。下面是一个使用闭包实现私有字段的示例: ```lua -- 定义一个类 local MyClass = {} -- 创建一个闭包,用来保存私有变量 local PrivateVars = {} -- 定义一个公有方法,用来设置私有变量 function MyClass:setPrivateVar(name, value) PrivateVars[self][name] = value end -- 定义一个公有方法,用来获取私有变量 function MyClass:getPrivateVar(name) return PrivateVars[self][name] end -- 定义一个方法,用来输出私有变量 function MyClass:hello() print("Hello, my name is " .. self:getPrivateVar("name") .. "!") end -- 创建一个实例 local obj = {} PrivateVars[obj] = { name = "Jack" } setmetatable(obj, { __index = MyClass }) -- 调用方法 obj:hello() -- 输出 "Hello, my name is Jack!" ``` 在上面的示例中,我们定义了一个类 `MyClass`,并创建了一个闭包 `PrivateVars`,用来保存私有变量。闭包中的每个键值对都是一个实例的私有变量,通过使用 `PrivateVars[self]` 来获取当前实例的私有变量表。 然后,我们在类中定义了三个公有方法,分别用来设置、获取和输出私有变量。在方法中,我们通过 `PrivateVars[self]` 来获取当前实例的私有变量表,并使用 `name` 来访问私有变量。由于私有变量保存在闭包中,外部无法直接访问或修改,从而实现了封装。 最后,我们创建了一个实例 `obj`,并在 `PrivateVars[obj]` 中设置了 `name` 私有变量的初始值为 "Jack"。然后,我们调用了 `obj:hello()` 方法来输出私有变量的值。 需要注意的是,使用闭包来模拟私有字段会增加代码的复杂度,同时也会带来一定的能开销。因此,在设计程序时需要根据实际情况进行权衡和选择。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值