代码之家  ›  专栏  ›  技术社区  ›  Zhro

为什么有人会选择先发制人地使用嵌套运算符来进行多行引号?

  •  0
  • Zhro  · 技术社区  · 7 年前

    我在这里查看了一些文档:

    http://lua.sqlite.org/index.cgi/doc/tip/doc/lsqlite3.wiki#db_exec

    找到了这段代码:

        sql=[=[
          CREATE TABLE numbers(num1,num2,str);
          INSERT INTO numbers VALUES(1,11,"ABC");
          INSERT INTO numbers VALUES(2,22,"DEF");
          INSERT INTO numbers VALUES(3,33,"UVW");
          INSERT INTO numbers VALUES(4,44,"XYZ");
          SELECT * FROM numbers;
        ]=]
        function showrow(udata,cols,values,names)
          assert(udata=='test_udata')
          print('exec:')
          for i=1,cols do print('',names[i],values[i]) end
          return 0
        end
        db:exec(sql,showrow,'test_udata')
    

    在这里,它们使用多行字符串,但添加嵌套运算符 = 即使没有筑巢。

    为什么会有人这么做?

    1 回复  |  直到 7 年前
        1
  •  2
  •   Vlad    7 年前

    这个 = 符号不是嵌套运算符。它只是一个用来使双括号标记独一无二的符号。不管是否进行嵌套,重要的是关闭双括号具有相同数量的 = 符号,并且字符串文本不包含该结束标记。

    有可能 ]] 在SQL请求字符串中,但不是 ]=] . 所以使用 = ] 只是一个预防措施,编码风格的一部分,它消除了选择精确的双括号标记来匹配SQL请求的需要。