Lua多行注释过去]]';s

Lua多行注释过去]]';s,lua,comments,multiline,Lua,Comments,Multiline,我试图找到一种在一批代码上使用多行注释的方法,但它一直将其中的一些语法误认为]],并认为我希望它到此为止,但我不希望 --[[ for k,v in pairs(t) do local d = fullToShort[k] local col = xColours[v[1]] -- It stops here! cecho(string.format(("<%s>%s ", col, d)) end --]] --[[ 对于k,v成对(t)do 本地

我试图找到一种在一批代码上使用多行注释的方法,但它一直将其中的一些语法误认为]],并认为我希望它到此为止,但我不希望

--[[
  for k,v in pairs(t) do
    local d = fullToShort[k]
    local col = xColours[v[1]] -- It stops here!
    cecho(string.format(("<%s>%s ", col, d))
  end
--]]
--[[
对于k,v成对(t)do
本地d=fullToShort[k]
local col=xColours[v[1]]--它在这里停止!
cecho(string.format((“%s”,col,d))
结束
--]]
我想我在某个地方读到过,可以使用不同的组合来避免这些错误,比如--[=[或其他什么……有人能帮忙吗?

正如您在中看到的,有一个特殊的
[===[
嵌套方括号的语法。您也可以在块注释中使用它。请注意,
=
符号的数量在打开和关闭顺序中必须相同

例如,5个相等值将起作用

--[=====[ 
  for k,v in pairs(t) do
    local d = fullToShort[k]
    local col = xColours[v[1]] -- It stops here!
    cecho(string.format(("<%s>%s ", col, d))
  end
--]=====]
-->[=======[
对于k,v成对(t)do
本地d=fullToShort[k]
local col=xColours[v[1]]--它在这里停止!
cecho(string.format((“%s”,col,d))
结束
--]=====]

您可以使用以下命令创建多行注释,这些注释超过
]

--[[
   codes
]]

这几乎让人感觉像是一个模糊不清的问题。我想知道他们为什么这样做?@James,这不是模糊不清的问题-这是唯一正确的方法。每隔一段固定的“魔术评论结束字符序列”(从此以后的mccs)基本上无法处理包含MCCC本身的字符串。这就是为什么每次要在
CDATA
中写入
]>
时都会出现这种情况。避免这种情况的唯一方法是提供长度(或内容,如bash HEREDOCs)不同的成对分隔符。一个更好的问题是:为什么所有其他语言都不像Lua那样做呢?很酷,在
[[
]之间插入多音字符串时,它也会起作用
在块注释中。在这种情况下,您还可以将
=
放入嵌入块中,以将其与包含的块边界区分开来,例如,使用
[=[/code>和
]=]
@AndreyTyukin OCaml以一种优雅的方式解决问题:注释必须包含有效的代码标记:
(*“*)”*)
(*…(*嵌套注释*)…*)
一样有效。它允许您对任何语法有效的代码进行注释,没有任何问题。答案反映了问题的标题。我同意。最好重写原始问题标题。我在注释中没有看到任何
]