A = {}
function A:text()
return 100
end
print(A["text"]()) -- prints "100"
----------------------------------
A = {}
function A:text(value)
return value
end
print(A["text"](100)) -- prints "nil"
有没有办法可以将值作为参数传递并返回相同的值?我需要遍历5个函数...
答案 0 :(得分:5)
如果你正确宣布了你的功能,你可以。
function A:text(value)
这会创建一个带有两个参数的函数。 :
是对此负责的。第一个参数是一个名为self
的隐式声明参数。第二个是value
。此功能旨在被称为A:text(100)
或A["text"](A, 100)
。
这些类似于类成员的函数。
您应该创建如下函数:
function A.text(value)
这会创建一个带一个参数的函数。
答案 1 :(得分:1)
正如“Nicol Bolas”指出的那样,我添加了table / self参数,它运行正常。
-- from "A["text"](100)" to "A["text"](self, 100)" or "A["text"](A, 100)"
A = {}
B = {"text", "type"}
function A:text(value)
return "text "..value
end
function A:type(value)
return "type "..value
end
for i=1, 3 do
for j=1, #B do
print(A[B[j]](self, i)) -- prints "text 1 type 1 text 2 type 2 text 3 type 3"
end
end