【问题标题】:Why would someone choose to preemptively use the nesting operator for their multi-line quotes?为什么有人会选择抢先使用嵌套运算符作为他们的多行引号?
【发布时间】:2019-09-20 15:09:25
【问题描述】:

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

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

发现了这段代码sn-p:

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

这里他们使用多行字符串,但添加了嵌套运算符=,即使没有发生嵌套。

为什么有人会这样做?

【问题讨论】:

    标签: lua multiline multilinestring


    【解决方案1】:

    = 符号不是嵌套运算符。它只是用于使双括号标记唯一的符号。是否发生嵌套并不重要,重要的是右双括号具有相同数量的= 符号,并且字符串文字不包含该结束标记。

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

    【讨论】:

      猜你喜欢
      • 2013-01-21
      • 1970-01-01
      • 2014-11-12
      • 1970-01-01
      • 1970-01-01
      • 2011-11-20
      • 1970-01-01
      • 1970-01-01
      • 2013-07-27
      相关资源
      最近更新 更多