一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Lua - Lua面向對象編程之基礎結構table簡例

Lua面向對象編程之基礎結構table簡例

2020-05-09 10:58Czhenya Lua

今天小編就為大家分享一篇關于Lua面向對象編程之基礎結構table簡例,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧

面向對象編程

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

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

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

簡例:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
-- Czhenya Lua 面向對象
-- 對于一個對象來說, 屬性 方法
--[[ 兩種定義函數的方式
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})  --設置元表
  --調用一個屬性的時候,如果t中不存在,就會在__index所指的table中查找
  return t
end
-- 類似于通過構造函數創建對象
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)

冒號和點定義函數的區別:

?
1
2
3
4
5
6
7
8
9
10
11
-- 使用冒號和點來的定義函數,建議用什么定義函數,用什么調用
person = {name="Czhenya",age=22}
function person:eat()
  print(self.name.."的年齡是"..self.age)
end
person.eat(person)
a = person
--冒號調用self自動賦值
a:eat()
--通過點來調用的時候,self不會自動賦值,必須通過參數傳遞
a.eat(a)

總結

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

原文鏈接:https://blog.csdn.net/Czhenya/article/details/78484215

延伸 · 閱讀

精彩推薦
  • LuaLua中計算、執行字符串中Lua代碼的方法

    Lua中計算、執行字符串中Lua代碼的方法

    這篇文章主要介紹了Lua中計算、執行字符串中Lua代碼的方法,類似JavaScript中eval函數的功能,在Lua中也可以實現,需要的朋友可以參考下 ...

    腳本之家6322020-04-30
  • LuaLua和C語言的交互詳解

    Lua和C語言的交互詳解

    這篇文章主要介紹了Lua和C語言的交互詳解,Lua和C語言通過棧完成交互,本文結合代碼實例詳細講解了交互的方法,需要的朋友可以參考下 ...

    果凍想3702020-04-14
  • Lua深入探究Lua中的解析表達式

    深入探究Lua中的解析表達式

    這篇文章主要介紹了深入探究Lua中的解析表達式,對于其語法部分的說明和示例都超詳細,極力推薦此文!需要的朋友可以參考下 ...

    腳本之家3542020-05-05
  • LuaLua中的元方法__newindex詳解

    Lua中的元方法__newindex詳解

    這篇文章主要介紹了Lua中的元方法__newindex詳解,本文講解了查詢與更新、監控賦值、通過table給另一個table賦值等內容,需要的朋友可以參考下 ...

    笨木頭8872020-04-09
  • LuaLua教程(二):基礎知識、類型與值介紹

    Lua教程(二):基礎知識、類型與值介紹

    這篇文章主要介紹了Lua教程(二):基礎知識、類型與值介紹,本文講解了Hello World程序、代碼規范、全局變量、類型與值等內容,需要的朋友可以參考下 ...

    腳本之家5922020-04-28
  • LuaLua簡介、編譯安裝教程及變量等語法介紹

    Lua簡介、編譯安裝教程及變量等語法介紹

    這篇文章主要介紹了Lua簡介、編譯安裝教程及變量等語法介紹,本文同時講解了lua注釋語法、Lua命令行方式等內容,需要的朋友可以參考下 ...

    junjie3632020-04-14
  • LuaLua中table庫函數方法介紹

    Lua中table庫函數方法介紹

    這篇文章主要介紹了Lua中table庫函數方法介紹,本文講解了concat、insert、maxn、remove、sort、foreachi等方法,需要的朋友可以參考下 ...

    腳本之家2502020-04-17
  • LuaLua實現__add方法重載示例

    Lua實現__add方法重載示例

    這篇文章主要介紹了Lua實現__add方法重載示例,本文直接給出實現代碼,需要的朋友可以參考下 ...

    腳本之家7452020-04-24
主站蜘蛛池模板: 我与肥熟老妇的性事 | 欧美成人中文字幕 | 出水小说 | 处女摘花 | 91次元成年破解版 | 92精品国产成人观看免费 | 草莓绿巨人香蕉茄子芭乐 | 国产一区二区免费福利片 | 日本一区二区三区国产 | 插鸡网站 | chinese老太granny| 亚洲国产日韩制服在线观看 | 亚洲四虎永久在线播放 | 国产成人久视频免费 | 婷婷丁香视频 | 好大好硬抽搐好爽想要 | 欧美在线视频一区二区 | 啊好爽视频 | 91庥豆果冻天美精东蜜桃传媒 | 91九色jiuse006 | 天天摸天天碰色综合网 | 日本最新免费二区 | 精品一久久香蕉国产线看播放 | 免费看1级伦理 | 天堂资源在线8 | 久久久精品3d动漫一区二区三区 | 四虎www| 好大好想要 | 欧美久久影院 | 国产成人一区二区三区视频免费蜜 | 日韩精品视频在线观看免费 | 无遮掩60分钟从头啪到尾 | 亚洲精品福利一区二区在线观看 | 国色天香视频完整版 | 欧美色精品天天在线观看视频 | jazz中国女人护士 | 久久精品一卡二卡三卡四卡视频版 | 婷婷国产在线 | 免费jizz在在线播放国产 | 我把校花黑色蕾丝胸罩脱了 | 天天操天天爽天天射 |