编辑:我在尝试缩减示例代码时不小心歪曲了这个问题。我的代码的一个关键部分是我在向数组添加元素后尝试对数组进行排序。挂起出现在sort上,而不是 insert 上。以下抽象代码将始终挂起:
<?=
local('a' = array)
#a->insert('test1' = map('a'='1'))
#a->insert('test2' = map('b'='2')) // comment-out to make work
#a->sort
#a
?>
我有一个结果集,我想为每个唯一键将一对值插入到数组中,如下所示:
resultset(2) => {
records => {
if(!$logTypeClasses->contains(field('logTypeClass'))) => {
local(i) = pair(field('logTypeClass'), map('title' = field('logType'), 'class' = field('logTypeClass')))
log_critical(#i)
$logTypeClasses->insert(#i) // Lasso hangs on this line, will return if commented-out
}
}
}
奇怪的是,我不能在#i
没有 Lasso 挂起的情况下将局部变量插入到线程变量中。我从来没有收到错误,页面也永远不会返回。它只是无限期地挂起。
我确实看到正确记录了对,这使我相信生成对的语法是正确的。
只要该对的值侧不是具有值的映射,我就可以使代码工作。换句话说,当对的值侧是一个字符串,甚至是一个空映射时,它就可以工作。一旦我将 key=value 参数添加到地图中,它就会失败。
我一定遗漏了一些明显的东西。任何指针?提前感谢您的时间和考虑。