为什么有人会选择抢先使用嵌套运算符作为多行引号?

时间:2019-05-02 06:16:22

标签: lua multiline multilinestring

我在这里查看一些文档:

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 个答案:

答案 0 :(得分:2)

=符号不是嵌套运算符。它只是使双括号标记变得唯一的符号。不管是否进行嵌套都无关紧要,重要的是,右方括号包含相同数量的=,并且字符串文字不包含该结束标记。

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