Luaオブジェクト指向プログラミング。基本構造表の簡単な例
2022-01-05 11:42:28
オブジェクト指向プログラミング
(オブジェクト指向プログラミング、OOP)は、非常に人気のあるコンピュータ・プログラミング・アーキテクチャです。
Luaの最も基本的な構造はtableなので、tableを使ってオブジェクトのプロパティを記述する必要があります。
Luaの関数は、メソッドを表現するために使用することができます。そして、Luaのクラスは、テーブル+関数でエミュレートすることができます。
簡単な例です。
-- Czhenya Lua Object-Oriented
-- For an object, properties methods
--[[ Two ways to define functions
person.eat = function()
print(person.name. "in writing LUA")
end
function person.eat()
print(person.name.. "in writing LUA")
end
--]]
-- as a prototype
Person = {name = 'Czhena',age = 22}
function Person:eat()
print(self.name. "s age is". .self.age)
end
function Person:new(o) -- return false if o is empty
local t = o or {}
--[[ Same result as set below, just two different ways
setmetatable{t,self}
self.__index=self
--]]
setmetatable(t,{__index = self}) -- Set metatable
-- call an attribute that doesn't exist in t, it looks in the table referred to by __index
return t
end
-- similar to creating an object via a constructor
person1 = Person:new({weight = 100})
person2 = Person:new()
print(person1.name)
print(person1.weight)
print(person2.name)
person1.name = "CZY" -- does not change the meta table, add to person.name
person1:eat()
person2:eat()
--Inheritance
Student = Person:new()
Student.grade = 1
stu1 = Student:new()
stu1:eat()
print(stu1.grade)
コロンとドット定義の関数の違い。
-- Use colons and dots to define functions, and suggest what to define functions with and what to call them with
person = {name="Czhenya",age=22}
function person:eat()
print(self.name. "s age is". .self.age)
end
person.eat(person)
a = person
--colon calls self auto-assignment
a:eat()
-- When called by a dot, self is not automatically assigned a value, it must be passed as an argument
a.eat(a)
概要
以上が本記事の内容の全てです、皆様の勉強やお仕事のために本記事の内容が一定の参考学習価値を持つことを願っています、BinaryDevelopをよろしくお願いします。もっと詳しく知りたい方は、以下のリンク先をご確認ください。
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン