Array.empty的相反方法是什么?还是[].空?红宝石



我确实意识到我可以进行

unless [1].empty? 

但我想知道是否有办法?

正如davidrac提到的#any?一样,有了ActiveSupport,是否存在#?这在其他语言中更像是一个真理测试。对于nilfalse''{}[]等,返回false;对于其他一切都是真的(有趣的是,包括0)。

您可以使用[1].any?,它实际上是在Enumerable 中定义的

请注意,如果您的数组仅包含nilfalse值,则这将不起作用。

[nil].any?
=> false
[nil].any? {|something| true}
=> true
[].any? {|something| true}
=> false
[false, false].any? {|something| true}
=> true
[nil, 'g'].any? {|something| true}
=> true

据我所知,在Ruby中,没有一个方法能为您提供这种功能。关键词"单一":

[5].size.positive? => true
[5].size.nonzero? => 1
[].size.positive? => false
[].size.nonzero? => nil

这两种方法在安全导航操作符中都更有用,因为nil返回falsy,这意味着负方法(如#empty?)会有点崩溃:

# nil considered 'not empty' isn't usually what you want
not_empty = proc{|obj| !obj&.empty? }
not_empty.call nil => true
not_empty.call [ ] => false
not_empty.call [5] => true

# gives different 3 answers for the 3 cases
# gives truthy/falsy values you'd probably expect
positive_size = proc{|obj| obj&.size&.positive? }
positive_size.call nil => nil
positive_size.call [ ] => false
positive_size.call [5] => true

# gives truthy/falsy values you'd probably expect
nonzero_size = proc{|obj| obj&.size&.nonzero? }
nonzero_size.call nil => nil
nonzero_size.call [ ] => nil
nonzero_size.call [5] => 1

要检查数组中的元素:
.空的
.礼物

如果a={}
a.有吗。零
会给你虚假的信息。

检查字段是否具有非零值:

.present?
.nil?
.any?

相关内容

最新更新