最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Lua面向?qū)ο缶幊讨A結構table簡例

 更新時間:2018年10月25日 15:18:06   作者:Czhenya  
今天小編就為大家分享一篇關于Lua面向?qū)ο缶幊讨A結構table簡例,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧

面向?qū)ο缶幊?/strong>

(Object Oriented Programming,OOP)是一種非常流行的計算機編程架構。

Lua中最基本的結構是table,所以需要用table來描述對象的屬性。

Lua中的function可以用來表示方法。那么Lua中的類可以通過table + function模擬出來。

簡例:

-- Czhenya Lua 面向?qū)ο?
-- 對于一個對象來說, 屬性 方法
--[[ 兩種定義函數(shù)的方式
person.eat = function()
  print(person.name.."在寫LUA")
end
function person.eat()
  print(person.name.."在寫LUA")
end
--]]
--作為原型
Person = {name = 'Czhena',age = 22}
function Person:eat()
  print(self.name.."的年齡是"..self.age)
end
function Person:new(o)  -- 若o是空的則返回false
  local t = o or {}
  --[[ 和下面設置結果一樣,只是兩種不同的方式
  setmetatable{t,self}
  self.__index=self
  --]]
  setmetatable(t,{__index = self})  --設置元表
  --調(diào)用一個屬性的時候,如果t中不存在,就會在__index所指的table中查找
  return t
end
-- 類似于通過構造函數(shù)創(chuàng)建對象
person1 = Person:new({weight = 100})
person2 = Person:new()
print(person1.name)
print(person1.weight)
print(person2.name)
person1.name = "CZY"  --不會改變元表,添加到person.name
person1:eat()
person2:eat()
--繼承
Student = Person:new()
Student.grade = 1
stu1 = Student:new()
stu1:eat()
print(stu1.grade)

冒號和點定義函數(shù)的區(qū)別:

-- 使用冒號和點來的定義函數(shù),建議用什么定義函數(shù),用什么調(diào)用
person = {name="Czhenya",age=22}
function person:eat()
  print(self.name.."的年齡是"..self.age)
end
person.eat(person)
a = person
--冒號調(diào)用self自動賦值
a:eat()
--通過點來調(diào)用的時候,self不會自動賦值,必須通過參數(shù)傳遞
a.eat(a)

總結

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關內(nèi)容請查看下面相關鏈接

相關文章

最新評論

绵竹市| 成都市| 共和县| 湖北省| 葵青区| 泰州市| 翼城县| 清水河县| 临湘市| 南岸区| 休宁县| 曲周县| 绥芬河市| 璧山县| 吕梁市| 谢通门县| 南岸区| 甘德县| 惠州市| 剑阁县| 宁德市| 武定县| 揭西县| 临江市| 玛沁县| 孟州市| 长丰县| 平定县| 洛宁县| 沙洋县| 天祝| 翼城县| 略阳县| 三门峡市| 武川县| 明溪县| 伊宁县| 仁寿县| 曲阳县| 应城市| 隆安县|