Lua中self標識

       在lua中,表擁有一個標識:self。self類似於this指針,大多數面嚮對象語言都隱藏了這個機制,在編碼時不需要顯示的聲明這個參數,就可以在方法內使用this(例如C++和C#)。

       在lua中,提供了冒號操作符來隱藏這個參數

冒號的作用有兩個:

1、對於方法定義來說,會增加一個額外的隱藏形參(self);

2、對於方法調用來說,會增加一個額外的實參(表自身)

local t = {a = 2 , b = 1}
--使用:自定義函數
function t:add()
  return self.a + self.b
end
--使用.自定義函數
function t.sub(parT)
  return parT.a - parT.b
end
--通過:調用,會隱式將self傳入進去
print(t:add())
--通過.來調用,則必須傳入參數,否則報nil錯誤
print(t.add(t))
--通過.來調用,則必須傳入參數,否則報nil錯誤
print(t.sub(t))
--通過:來調用,則會隱藏將self傳入
print(t:sub())

運行結果:

[root@iZbp13pwlxqwiu1xxb6szsZ test]# lua TestSelf.lua 
3
3
1
1


參考https://zhuanlan.zhihu.com/p/115159195

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章