我有以下数组和方法:
array = ["1", 0, "a", ""]
array.reject(&:blank?).map(&:to_i).reject{|i| i == 0}
如果我想使用感叹号(例如
.map!(&:to_i)
)将更改保存在适当的位置,则应该将标记放在每个方法之后还是其他位置-在哪里? 最佳答案
感叹号不是修饰语。
array.reject!(&:blank?).map!(&:to_i).reject!{|i| i == 0}
然而,这段代码是微妙的错误从
reject!
文档:如果未做任何更改,则返回nil。
哎呀这可能会打破你的整个链条相反,您应该使用delete_if,它总是返回数组。
array.delete_if(&:blank?).map!(&:to_i).delete_if{|i| i == 0}
是的,令人困惑的是它没有爆炸,但它确实在适当的地方进行了修改从文档中:
每次调用块时都会立即更改数组,而不是在迭代结束后。
关于ruby-on-rails - 方法链接在一起时在何处放置感叹号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39333939/