Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有以下代码,它应该提供一个简单的true-false包装器Array#detect,即nil-element.
true-false
Array#detect
nil-element
class Array def any &expr if (self.detect expr) return true else return false end end end
出于某种奇怪的原因,无论传递给什么&expr,它总是返回 true!为什么是这样?
&expr
Enumerable#detect 的文档说它可以选择采用一个参数。如果它没有找到与你的块匹配的元素,它会返回这个参数。在您的情况下,您将 Proc 对象传递给exprto detect,而不是传递块。这会导致detect返回一个枚举器,它不会被解释为“虚假”值。
expr
detect
我认为你想self.detect &expr传递一个实际的块而不是 Proc。
self.detect &expr