Lua学習の5つの対象


Luaにはオブジェクト向けのものはありませんが、実現できます.
オブジェクト向けの学習パスは次のようになります.
self,コロン,点の概念--』メタテーブルの概念--』オブジェクトの概念--』継承/再ロード
self,コロン,点の概念
	--self,  , 
print("      -----------------------------------------------------")

--   a.test(a,4,6), b:test(4,6)    
--    ,    self  
--  ,     b:test,      
local a = {}
function a.test(self,pam1,pam2)
	print("a.test",self)
	print(pam1,pam2)
end
a.test(a,4,6)

local b = {}
function b:test(pam1,pam2)
	print("b:test",self)
	print(pam1,pam2)
end
b.test(4,6)
b:test(4,6)

ここの出力
a.test	table: 0D98C898
4	6
b:test	4
6	nil
b:test	table: 0D98C780
4	6
table: 0D98C758

メタテーブルの概念
--   
local a = {
	key1 = "test1"
}
local meta_a = {
	__index = {
		name = "blake",
		age = 34,
		sex = 0,
		key1 = "test2"
	}

}
	
--     ,          ,        
--             
--setmetatable   (    )  getmetatable     
setmetatable(a,meta_a)	
print(getmetatable(a))

--         key
--  
--	
--	         key,      
--	lua      __index      key

print(a.key1)
print(a.name)
print(a.name2)

ここの出力
test1
blake
nil

オブジェクトの概念
--  
local base = {}
--    
function base:test()
	print("base:test",self)
end

function base:new(instant)
	if not instant then 
		instant = {}
	end
	setmetatable(instant,{__index = self}) --         
	return instant
end


--   new         
--       instant nil
local b = base:new()
print("b addr is " ,b)
b:test()
	
local c = base:new()
c:test()
		
--   new         
local instant = {}
local d = base:new(instant)
local e = base:new(instant)
d:test()
e:test()

ここの出力
b addr is 	table: 0D98CAC8
base:test	table: 0D98CAC8
base:test	table: 0D98CB40
base:test	table: 0D98CF28
base:test	table: 0D98CF28

継承/再ロード
--  ,  	
print("  ,     -----------------------------------------------------")
local person = {}
--    
function person:test()
	print("person:test",self)
end
function person:get_age()
	print("person:get_age",self)
end

function person:new(instant)
	if not instant then 
		instant = {}
	end
	setmetatable(instant,{__index = self}) --         
	return instant
end

local man = person:new()
function man:test_man()
	print("man:test_man",self)
end

function man:test_man2()
	print("man:test_man2",self)
end

function man:get_age()
	print("man:get_age",self)
end

local p = man:new()
print("p = ====",p)
p:test_man()
p:test()

--  
p:get_age()

ここで出力
  ,     -----------------------------------------------------
p = ====	table: 0D98CC08
man:test_man	table: 0D98CC08
person:test	table: 0D98CC08
man:get_age	table: 0D98CC08

Lua学習の1つの環境構築:https://blog.csdn.net/cmqwan/article/details/80742135Lua学習の2つの基本的なタイプ:https://blog.csdn.net/cmqwan/article/details/80742990Lua学習の3つのプロセス制御:https://blog.csdn.net/cmqwan/article/details/80749169Lua学習の4サイクル:https://blog.csdn.net/cmqwan/article/details/80749241
Lua学習の5つの対象:https://blog.csdn.net/cmqwan/article/details/80749348Lua学習の6つのモジュール:https://blog.csdn.net/cmqwan/article/details/80752806Lua学習の7つのソース:https://blog.csdn.net/cmqwan/article/details/80752873
Lua学習の1つの環境構築
Lua学習の二基本タイプ
Lua学習の三フロー制御
Lua学習の四サイクル
Lua学習の5つの対象
Lua学習の6モジュール
Lua学習の七源コード