返回 Lua 中的参数


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!",而不是由函数返回,而是由参数返回。

你可以

做类似的事情

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)

在您的示例中,您没有访问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])
    

最新更新