Lua中的字符串拼接

只是为项目学习 Lua。我不喜欢用 '..' 运算符连接字符串(对我来说看起来很别扭)。我还不太了解 Lua - 但它似乎非常灵活。

是否可能以某种方式“修改”这种行为(可能使用元表?),以便我可以使用 '+' 而不是 '..' 进行字符串连接?

原文链接 https://stackoverflow.com/questions/4255045

点赞
stackoverflow用户126042
stackoverflow用户126042

是的,这是可能的。IBM 的这篇文章提供了一个使用特定的 "String" 类的例子:

-- 重载 add 操作符
-- 实现字符串串联
--
mt = {}

function String(string)
  return setmetatable({value = string or ''}, mt)
end

-- 第一个操作数是 String 表
-- 第二个操作数是字符串
-- .. 是 Lua 串联操作符
--
function mt.__add(a, b)
  return String(a.value..b)
end

s = String('Hello')
print((s + ' There ' + ' World!').value )

这种方法的优点是它不会干扰现有的字符串表,并且对于现有的 Lua 用户来说,更清楚地知道你正在使用 "不同" 的 __add 操作符。

2010-11-23 10:31:05
stackoverflow用户107090
stackoverflow用户107090

尝试这段代码:

getmetatable("").__add = function(x,y) return x..y end
print("hello"+" "+"world")

翻译:设置字符串元表并重载加运算符,打印 "hello" 和 "world" 之间带有空格的字符串相加的结果。

2010-11-23 13:32:15