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

Kam*_*i81 61 ruby

我确实意识到我能做到

unless [1].empty? 
Run Code Online (Sandbox Code Playgroud)

但我想知道是否有方法?

noo*_*odl 86

作为以及#any?作为davidrac提到,用的ActiveSupport#present?这更像是其他语言的真实测试.对于nil,false,'',{},[]等它返回false; 其他一切都是真的(包括0,有趣的是).

  • `any?`会慢于`![].empty?`因为`any?`检查是否存在nil元素.在场的时候?并且空白?很好,他们也慢,因为他们必须检查元素`respond_to?(:empty)`.没有真正的"倒空"? (7认同)
  • #展示?如果您可以访问 ActiveSupport,这可能是您最好的选择。 (2认同)
  • 另一个对此答案的投票:当您使用ActiveSupport时(例如在Rails应用程序中),您可以使用#present?满足您的需求.但与#present相反?实际上是#blank?而不是#empty?#空白?具有与#present相同的"空虚"定义?在答案中...... (2认同)

dav*_*rac 19

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

请注意,如果您的数组只保留nil或false值,这将不起作用(感谢评论@InternetSeriousBusiness).

  • [假,假].是的? (17认同)

小智 9

[nil].any?
=> false
[nil].any? {|something| true}
=> true
[].any? {|something| true}
=> false
[false, false].any? {|something| true}
=> true
[nil, 'g'].any? {|something| true}
=> true
Run Code Online (Sandbox Code Playgroud)

  • 这个答案实在令人费解。返回 true 的代码片段这样做只是因为块内的返回值,而不是因为数组内的值。(例4和例5相同)。在示例 3 的情况下,该块永远不会执行,因为数组为空。 (2认同)