Luaドットとコロン
816 ワード
Luaドットとコロン
lua自体にはクラス機能がなく,そのクラス機能はメタテーブルによって実現される.クラスの関数呼び出しはobj:function方式によって行われる.しかし、クラスのメンバーの付与はobjを介して行われる.var方式で実現した.lua 5.1のマニュアルをめくると、コロンについてはこのような説明しかないことがわかりました.(lua 5.1マニュアル)
コロン構文は、メソッドを定義するために使用できます.すなわち、関数には暗黙的なパラメータselfがあります.したがって、function t.a.b.c:f(params)body endは、t.a.b.c.f=function(self,params)body endという表記の文法糖である
そして私は次のテストをして、コロンの使い方を明らかにしました.
出力:
[LUA-print] tf [LUA-print] 10 [LUA-print] 20 [LUA-print] 30
コロンを発見するとfunction間の通信のためにtableが内蔵されます.
lua自体にはクラス機能がなく,そのクラス機能はメタテーブルによって実現される.クラスの関数呼び出しはobj:function方式によって行われる.しかし、クラスのメンバーの付与はobjを介して行われる.var方式で実現した.lua 5.1のマニュアルをめくると、コロンについてはこのような説明しかないことがわかりました.(lua 5.1マニュアル)
コロン構文は、メソッドを定義するために使用できます.すなわち、関数には暗黙的なパラメータselfがあります.したがって、function t.a.b.c:f(params)body endは、t.a.b.c.f=function(self,params)body endという表記の文法糖である
そして私は次のテストをして、コロンの使い方を明らかにしました.
function test()
t.f()
t:g()
t:h()
t.i()
t:h()
t.j(t)
t:h()
end
t = {}
function t.f()
print("tf");
end
function t:g()
self.x = 10
end
function t:h()
print(self.x)
end
function t.i()
t.x = 20
end
function t.j(k)
k.x = 30
end
出力:
[LUA-print] tf [LUA-print] 10 [LUA-print] 20 [LUA-print] 30
コロンを発見するとfunction間の通信のためにtableが内蔵されます.