問題描述
已經放 } 但錯誤仍然說 } 是預期的? (Already put } but the error still says that } is expected?)
我從一個教程中得到這個,當我嘗試運行它時,一個令人困惑的錯誤出現
local t1 = {"hi", true}
local t2 = {79, "bye", false}
local mt = {
__concat = function(v1, v2)
local output = {}
for i, v in pairs(v1) do
table.insert(output, v)
end
for i, v in pairs(v2) do
table.insert(output, v)
end
end
return output
}
setmetatable(t1, mt)
setmetatable(t2, mt) ‑‑they gotta have it both as well
local t3 = t1..t2 ‑‑we merged t1 and t2 together, as you can see you can get creative
print(unpack(t3)) ‑‑t3 contains all of t1 and t2's members
錯誤是:文件:13: '}' 預計(在第 3 行關閉 '{')靠近 'return'
參考解法
方法 1:
Your problem: you're taking the error message too literally without taking the time to understand it.
Lua isn't just randomly expecting a }
exactly on line 13, it's expecting something that makes sense in a table literal and finds a return
instead, so it defaults to tell you the first thing it can think of that would make sense, aka. closing the table with a }
first.
The real problem, is that the return
is outside of the function, so Lua doesn't know what to make of it. It needs to go above the end
instead.
Generally speaking: When Lua tells you Expected something on line X, you should just read it as I found something weird on line X and have no idea what you mean. A better error message would have been encountered return
in table literal I guess.
(by BlaztOne、DarkWiiPlayer)