这是零的红宝石成语吗?

嗨,我想要一个条件,当它为nil时,它为true,或者它调用check方法并返回true / false。例如:

(apple.nil? || apple.sweet?) && (pear.nil? || pear.sweet?)

它检查所有水果是否都甜(这里只有苹果和梨)。是否有任何红宝石成语来简化此代码?

欢呼声

yangshd 回答:这是零的红宝石成语吗?

  

如果所有水果都很甜

[apple,pear].compact.all?(&:sweet?)

compact摆脱了nil元素,然后all?(&:sweet?)检查其余所有元素是否都是甜美的。

,

Amadan提供的解决方案的替代方案:

fruits.all? { |f| f.nil? || f.sweet? }

尽管正如Amadan正确建议的那样,使用compact的想法很简洁,但它可能会创建一个非null元素的临时数组,而仅使用all?并不需要这样。一个数组,一旦遇到不满足条件的元素,迭代就会停止。

当然,如果您的代码中仅包含两个结果,而我们对此进行了明确介绍,那么我认为比起

更好地理解您的代码
[apple,pear].all? {...}
本文链接:https://www.f2er.com/3140273.html

大家都在问