在学习 Lua 的过程中,我从这里借用了一些代码 来使用字符串索引,就是这样:
getmetatable("").__index = function(str, i) return string.sub(str, i, i) end
之后,我写了一个函数来反转一个字符串作为练习。
function reverse_string(str)
local s = ""
for i = string.len(str), 1, -1 do s = s .. str[i] end
return s
end
这工作正常,直到我将 更改string.len(str)
为str:len()
,然后我收到此错误:
reverse.lua:9: bad argument #2 to 'sub' (number expected, got string)
调试 print() 告诉我该__index
函数正在被调用str:len()
,并且i
参数正在变成字符串“len”。我知道 str:len() 可以在没有元表的情况下工作,但是一旦我添加它就会发生这种情况,为什么?