我无法弄清楚原因,但在使用reject!(&:empty?)
时,会删除非空对象。
示例:
["example"].reject!(&:empty?)
返回nil
。但是,
["example", ""].reject!(&:empty?)
返回["example"]
,就像它应该的那样。
为什么?
答案 0 :(得分:5)
等同于
#delete_if
,删除自身为块计算结果为true的元素,但如果未进行任何更改则返回nil 。
如果您想使用数组的结果(并且对更改数组不太感兴趣 - 请改为使用reject
:
["example"].reject(&:empty?)
# => ["example"]
["example", ""].reject(&:empty?)
# => ["example"]