字符串funtions可以用此方式使用:Lua:我如何连接方法,就像字符串方法一样?
string.FUNCTION('myString', PARAMETER)
或字符串替换“串”的使用和调用它的方法
('myString'):METHOD(PARAMETER)
最后的方法是非常精细阅读和允许连接方法。
-- example string operation
some_str, pos = ' some string', 1
-- default string syntax
while string.find(string.sub(some_str, pos, pos), '%s') do pos = pos +1 end
-- the same with syntactic sugar
while some_str:sub(pos, pos):find('%s') do pos = pos +1 end
所以我试图用我自己的功能获得相同的行为。但是这失败了。 我发现的唯一方法是使用附加参数来说:返回对象本身或结果。 这里有一个简单的例子。
calc = {
result = 0,
operator = '',
run = function(self, a, b, r) -- return self with r='s'
if b == 's' then r, b = b, nil end
if not b then b, a = a, self.result end
if self.operator == '+' then self.result = (a) + (b)
elseif self.operator == '-' then self.result = (a) - (b)
elseif self.operator == '*' then self.result = (a) * (b)
elseif self.operator == '/' then self.result = (a)/(b) end
if r ~= nil then return self else return self.result end
end,
add = function(self, a, b, r) self.operator = '+' return self:run(a, b, r) end,
sub = function(self, a, b, r) self.operator = '-' return self:run(a, b, r) end,
mul = function(self, a, b, r) self.operator = '*' return self:run(a, b, r) end,
div = function(self, a, b, r) self.operator = '/' return self:run(a, b, r) end
}
-- single operation
result = calc:add(12, 5)
-- concatenated operations
result = calc:add(12, 5, 's'):sub(3, 's'):mul(2, 's'):div(7)
存在任何方式来做到这一点,就像字符串操作一样吗? 在此先感谢。
Lua返回一个新的字符串,然后你可以简单地调用新字符串的方法。因此链接。你是否返回了该方法被调用的同一张表? – warspyking