Lua multiline评论过去]]的

Jon*_*azo 29 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
--]]
Run Code Online (Sandbox Code Playgroud)

我以为我在某个地方读过可以使用不同的组合来避免这些错误,比如 - [= [或诸如此类的......有人可以帮忙吗?

Sea*_*ull 53

正如你在Strings教程中看到的那样[===[,嵌套方括号有一种特殊的语法.您也可以在块注释中使用它.请注意,=开启和关闭序列中的符号数必须相同.

例如,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
--]=====]
Run Code Online (Sandbox Code Playgroud)

  • @James这不是一个kludge - 这是唯一的*正确*方式.每个其他固定的"魔术评论结束字符序列"(以下称为MCCCS)从根本上无法处理包含MCCCS本身的字符串.这就是为什么你每次想要编写`]]>时都会遇到像[]]]> <![CDATA [>`](/sf/answers/15664771/)等[atrocities]的原因.在`CDATA`.避免它的唯一方法是提供长度不同的成对分隔符(或内容,如bash HEREDOCs).一个更好的问题是:为什么不是所有其他语言都像Lua一样? (4认同)
  • 这几乎感觉就像一块垃圾.我想知道为什么他们这样做? (3认同)