已經放 } 但錯誤仍然說 } 是預期的? (Already put } but the error still says that } is expected?)


問題描述

已經放 } 但錯誤仍然說 } 是預期的? (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 BlaztOneDarkWiiPlayer)

參考文件

  1. Already put } but the error still says that } is expected? (CC BY‑SA 2.5/3.0/4.0)

#syntax-error #lua #lua-table






相關問題

SQL Server 2008 - 嘗試編輯日期 - 語法錯誤? (SQL Server 2008 - Trying to edit dates - Syntax Error?)

將 Jquery.min 升級到 Jquery.1.9 時出錯 (Error Upgrade Jquery.min into Jquery.1.9)

SyntaxError:無效語法(打印功能) (SyntaxError: invalid syntax (print function))

錯誤:“if”之前的預期表達式 (error: expected expression before ‘if’)

導致 C2061 的用戶創建的標頭:語法錯誤:標識符“類名” (User-Created Header Causing C2061: Syntax Error : Identifier 'classname')

If 語句行收到語法錯誤 (Syntax Error received on If statement line)

語法錯誤:到達了意外的文件結尾。你有一個未關閉的#if (Syntax error: Unexpected end of file reached. You have an unclosed #if)

已經放 } 但錯誤仍然說 } 是預期的? (Already put } but the error still says that } is expected?)

為什麼 Java 不允許在這裡使用三元運算符? (Why doesn't Java allow the use of a ternary operator here?)

我在繪製向量時遇到語法錯誤 (I'm encountering a syntax error while plotting vectors)

我想在 Kotlin 中自定義新按鈕時遇到問題 (I have a problem when I want to customize my new button in Kotlin)

為什麼帶註釋的變量不能是全局的? (Why can't an annotated variable be global?)







留言討論