在lua中返回参数

时间:2014-09-09 09:34:20

标签: lua return parameter-passing

format = function(&Return, Length, Format, ...)
    Return = string.format(Format, ...);
    Return = string.sub(Format, 0, Length);
    return 1;
end

local Test;

format(Test, 12, "Hello world %s! This is a test.", "Hello World");

print(Test);

我希望这能印刷," Hello world!"没有它被函数返回但由参数返回。

2 个答案:

答案 0 :(得分:6)

您可以执行类似

的操作
local function Pointer()
  return setmetatable({},{
    __tostring = function(self) return self.value end
  })
end

format = function(Return, Length, Format, ...)
  Return.value = string.sub(Format, 0, Length)
  return 1
end

local Test = Pointer()

format(Test, 12, "Hello world %s! This is a test.", "Hello World")

print(Test)

答案 1 :(得分:1)

在您的示例中,您没有访问Return,只是设置它;你也没有使用返回值' 1'。所以:为什么不这样做:

format = function(Length, Format, ...)
    local Return = string.format(Format, ...)
    Return = string.sub(Format, 0, Length)
    local status = 1 -- i'm guessing this is a status code of sorts
    return Return, status
end

local Test, stat = format(12, "Hello world %s! This is a test.", "Hello World")

代码审核说明:

  • 基于你在任何地方使用分号和& Return作为函数参数这一事实,在我看来你仍然在思考C"。唐'吨。当你在Lua编程时,想想Lua。在Lua中,您可以返回多个值,并且不需要分号,因此为什么要使用不必要的符号来混淆代码。
  • 我建议将所有格式组件保持在一起,这样您就可以轻松扩展它:

    local Test, stat = format("Hello world %s! This is a test.", 
                             ["Hello World", 12], ['Joe', 5])