> so (Any)
False
但是。
> so [1, Any]
True
如何使其产生False
?
更新:这似乎可以工作,尽管我不确定这是否是正确的方法。
> so [1, Any].all
False
> so (Any)
False
> so [1, Any]
True
如何使其产生False
?
更新:这似乎可以工作,尽管我不确定这是否是正确的方法。
> so [1, Any].all
False
(Any)
不是一个 List
,(Any,)
才是 (注意逗号)。你应该将第一种情况改为数组(例如 [Any]
)。否则你就在比较苹果和橙子 :-)so
一个列表(小写列表指的是这个上下文中的 Array
或者 List
),它将获取列表中的元素数量:所以每个至少有一个元素的列表都会返回 True。0
或空字符串,你可以做一些简单的事情,比如:say so [&&] (1,Any,3); # False
say so [&&] (1,2,3); # True
[&&]
基本上是在表示:1 && Any && 3
和 1 && 2 && 3
。say [&&] (1,Any,3).map: *.defined; # False
say [&&] (1,0,3).map: *.defined; # True
so
,因为.map
已经将值转换为True
或False
。我把使用.first
更快的方法留给读者作为练习。say [1, 2, Any].all.defined
,这将自动在连接点上进行定义方法调用。say [1, 2, True].all.defined # True
say [1, Int, True].all.defined # False
so 0 == False
。 - Eugene Barsky