lua語言核心在table,通過將乙個table作為另乙個table的metatable元表,實現繼承;
通過乙個例子理解lua的物件導向和繼承;
---------------person base class
person={}
function person:new(o,age,name) --person的建構函式
o=o or {}
setmetatable(o,self)
self.__index=self
self.age=age or 0
self.name=name or ""
return o
endfunction person:sayhello() --person的成員函式
print("hello,i am "..self.name,"i am"..self.age.."years old.")
endp=person:new(nil,18,"tom") --建立乙個person物件p
p:sayhello()
--------------woman類 繼承自person
woman=person:new() --這句woman是person的建構函式的返回值,person是woman的原型
function woman:new(o,age,name) --woman的建構函式
o=o or person:new(o,age,name)
setmetatable(o,self)
self.__index=self
self.gender="woman" --只改變乙個gender欄位
return o
endfunction woman:sayhello() --重寫成員函式
person:sayhello()
print("i am a "..self.gender)
endw=woman:new(nil,20,"sany")
w:sayhello()
---------------man 繼承自person --man與woman一樣,繼承自person
man=person:new()
function man:new(o,age,name)
o=o or person:new(o,age,name)
setmetatable(o,self)
self.__index=self
self.gender="man"
return o
endfunction man:sayhello()
person:sayhello()
print("i am a "..self.gender)
endm=man:new(nil,23,"yua")
m:sayhello()
認識一下 RabbitMQ
分布式系統中,如何在各個應用之間高效的進行通訊,是系統設計中的乙個關鍵。使用訊息 message broker 是乙個優雅的解決方案。rabbitmq就是乙個被廣泛應用的訊息 遵循amqp協議。接下來我們就了解一下 石頭 broker是經紀人的意思,促成賣方 買方的交易,例如房產經紀人。訊息模型中,...
DevOps 認識一下
大家都在說devops develop operation 大概知道就是開發和運維溝通交流,一條線,然後使產品能夠順利的 短時間內上線 維穩什麼的。今天特意看了下 dockone裡面的一篇文章,再鞏固下自己的認識 開發運維一體化 總結一下 自動化是為了服務devops,並不是一定要自動化。目的是 提...
認識一下偽 吧
今天我希望在畫家的路上走走,驚嘆於css的神奇之餘,發現我對類似 的東西好陌生,於是乎,讓我們來認識一下它吧。first line 用於向文字的首行設定特殊樣式 first letter 用於向文字的首字母設定特殊樣式 font color background margin padding bor...