Lua中的字符串连接

时间:2010-11-23 10:26:53

标签: lua

只是阅读Lua的一个项目。我不喜欢用于连接字符串的'..'运算符(对我来说看起来不自然)。我对Lua还不太了解 - 但它似乎非常灵活。

是否有可能以某种方式'修改'这种行为(可能使用元表?),这样我就可以使用'+'代替'..'进行字符串连接?

2 个答案:

答案 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运算符做一些“不同”的事情。