为什么会有人选择在他们的多行引用中预先使用嵌套运算符?

我在这里看一些文档:

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')

这里使用了一个多行字符串,但是添加了嵌套运算符=,即使没有进行嵌套。

为什么有人要这样做呢?

点赞
用户5675002
用户5675002

=符号并不是一个嵌套运算符。它只是一个用来使双方框标记唯一的符号。无论是否发生嵌套,重要的是关闭的双重方括号具有相同数量的=符号,并且字符串字面量不包含该结束标记。

在 SQL 请求字符串中可能存在 ]],但不存在 ]=]。因此,使用 ]=] 只是一种预防措施,是一种编程风格的一部分,消除了选择确切的双方框标记来匹配 SQL 请求的需要。

2019-05-02 06:30:23