为什么有人会选择先发制人地使用嵌套运算符来进行多行引用?
Why would someone choose to preemptively use the nesting operator for their multi-line quotes?
我在这里查看了一些文档:
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')
他们在这里使用多行字符串,但添加了嵌套运算符 =
,即使没有发生嵌套。
为什么有人会这样做?
=
符号不是嵌套运算符。它只是一个用于使双括号标记独一无二的符号。嵌套是否发生并不重要,重要的是闭合的双括号具有相同数量的 =
符号,并且字符串文字不包含该结束标记。
sql 请求字符串中可以有 ]]
,但不能有 ]=]
。所以使用 ]=]
只是一种预防措施,是编码风格的一部分,无需选择精确的双括号标记来匹配 sql 请求。
我在这里查看了一些文档:
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')
他们在这里使用多行字符串,但添加了嵌套运算符 =
,即使没有发生嵌套。
为什么有人会这样做?
=
符号不是嵌套运算符。它只是一个用于使双括号标记独一无二的符号。嵌套是否发生并不重要,重要的是闭合的双括号具有相同数量的 =
符号,并且字符串文字不包含该结束标记。
sql 请求字符串中可以有 ]]
,但不能有 ]=]
。所以使用 ]=]
只是一种预防措施,是编码风格的一部分,无需选择精确的双括号标记来匹配 sql 请求。