只是阅读Lua的一个项目。我不喜欢用于连接字符串的'..'运算符(对我来说看起来不自然)。我对Lua还不太了解 - 但它似乎非常灵活。
是否有可能以某种方式'修改'这种行为(可能使用元表?),这样我就可以使用'+'代替'..'进行字符串连接?
答案 0 :(得分:6)
试试这段代码:
getmetatable("").__add = function(x,y) return x..y end
print("hello"+" "+"world")
答案 1 :(得分:3)
是的,这是可能的。 This article from IBM有一个使用特殊“String”类的示例:
-- Overload the add operation -- to do string concatenation -- mt = {} function String(string) return setmetatable({value = string or ''}, mt) end -- The first operand is a String table -- The second operand is a string -- .. is the Lua concatenate operator -- function mt.__add(a, b) return String(a.value..b) end s = String('Hello') print((s + ' There ' + ' World!').value )
这种方法的优势在于它不会踩到现有字符串表的脚趾,现有的Lua用户可以稍微清楚地看到你正在使用__add
运算符做一些“不同”的事情。