1

我经常遇到这样一种情况,即我正在测试嵌套映射或数组中是否存在值。为了防止冗长的条件,我想简化代码以不在节点的每个级别测试是否存在,而是在我想要的之后立即执行。

例如:

local(mymap = map('a' = (:1,2,3), 'b' = (:4,5,6)))

if (#mymap->find('c')->contains(9) ) => {}

如果 #mymap 中不存在键“c”,则 contains() 方法会引发错误。

我在 Lasso Startup 中定义它会很愚蠢吗?

define void->contains(...) => false

这将允许上述条件工作,而不必添加复合表达式来首先测试“c”是否存在。我错过了一些意想不到的后果吗?我是否忽略了一种更有效的方法来做到这一点?

4

1 回答 1

1

我的方法是使用“或”:

if((#mymap->find('c') || (:)) >> 9) => {}

这里发生的情况是,如果#mymap->find('c')产生非假值,则将其用于包含,否则将空静态数组用于包含。

于 2014-08-06T21:42:35.590 回答