Lua中将值作为参数传递

A = {}

function A:text()
    return 100
end

print(A["text"]()) -- 输出"100"

----------------------------------

A = {}

function A:text(value)
    return value
end

print(A["text"](100)) -- 输出"nil"

有没有办法可以传递一个值作为参数并返回相同的值?我需要循环遍历五个函数...

点赞
用户734069
用户734069

你可以使用正确的声明方式来实现。

function A:text(value)

这将创建一个接受_两个_参数的函数。冒号“:”就是所谓的原因。第一个参数是一个隐式声明的参数,叫作“self”。第二个参数是“value”。这个函数应该被称为A:text(100)或者A ["text"] (A,100)

这些是类成员类函数。

你应该像这样创建函数:

function A.text(value)

这会创建一个只有一个参数的函数。

2016-07-22 16:48:29
用户6101071
用户6101071

如"Nicol Bolas"所指出,我添加了表/table参数和自身参数/self,它工作得很好。

-- 从 "A["text"](100)" 变成 "A["text"](self, 100)" 或者 "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)) -- 输出 "text 1 type 1 text 2 type 2 text 3 type 3"
   end
end
2016-07-22 17:48:30