Array.reject!(&:empty?)删除非空对象

时间:2014-06-26 19:16:36

标签: ruby arrays

我无法弄清楚原因,但在使用reject!(&:empty?)时,会删除非空对象。

示例:

["example"].reject!(&:empty?)

返回nil。但是,

["example", ""].reject!(&:empty?)

返回["example"],就像它应该的那样。

为什么?

1 个答案:

答案 0 :(得分:5)

来自documentation

  

等同于#delete_if,删除自身为块计算结果为true的元素,但如果未进行任何更改则返回nil

如果您想使用数组的结果(并且对更改数组不太感兴趣 - 请改为使用reject

["example"].reject(&:empty?)
# => ["example"]
["example", ""].reject(&:empty?)
# => ["example"]