在下面的示例中,第二次是否会对可查询的#q进行评估?
local(max = 10, m = 5)
local(q = with n in 1 to 10 select #n+#m)
#q // 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
if(true) => {
#q // is it invoke here like the above?
}
我怀疑没有,但如果是这样的话,#q-> asString会调用查询吗?
答案 0 :(得分:2)
我认为你是对的。这是一个简单的测试,调用一个计数器线程对象,在每次调用时递增。
define test_count => thread {
data private val = 0
public asstring => {
.val += 1
return .val
}
}
local(max = 10, m = 5)
test_count
local(q = with n in 1 to 10 select #n+#m + integer(test_count -> asstring))
'<br />'
test_count
'<br />'
#q
'<br />'
test_count
'<br />'
if(true) => {
#q
}
'<br />'
test_count
结果 - &gt;
1
2
9,11,13,15,17,19,21,23,25,27
13个
14
永远不会处理#q的第二次调用。但是,您可以通过输出来强制它运行。