lua table中的方法长什么样子

标题已经说明了大部分,但是如果还不太清楚,我的意思是表中的一个数据像这样:

local myTable = {"banana","apple"}
-- 或者
local myTable = {["banana"] = 1,["apple"]=2,}
-- 方法看起来像这样:
local myTable = {
  function banana(args) print(args) end,
  -- 或者
  apple = function(args) print(args) end
}

但我不确定方法的样子是什么...确实可以在表外面创建方法,但我更喜欢将它放在表中...然而当我查看正常的"字典/库"时,我并没有看到任何像我需要的东西。

点赞
用户6575359
用户6575359

你在 lua 中所说的方法,实际上是指一个表格里的函数。

t={method=function(a) return a end}

你可以这样调用这个函数:

t.method(2)--返回 2

但是如果你用冒号 : 调用这个函数,它会把表格 t 作为第一个参数传递进去:

t:method()--返回 't'
t:method(2)--仍然返回 't'

实际上,这样调用等价于这样调用:

t.method(t)--返回 t

而且,如果第一个参数意图被用作“方法”,通常也习惯将其命名为 self。所以:

t={method=function(self, a) return a end}
t.method()--返回 nil
t.method(1)--返回 nil
t.method(1, 2)--返回 2
t:method()--返回 nil
t:method(1)--返回 1
t:method(1, 2)--返回 1
2020-09-01 12:26:44