将值作为Lua中的参数传递

时间:2016-07-22 16:43:42

标签: lua

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个函数...

2 个答案:

答案 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
相关问题