我有以下数组和方法:
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!
文档:
returns nil if no changes were made.
糟糕!这可能会破坏您的整个链条。相反,您应该使用 delete_if ,它总是返回数组。
array.delete_if(&:blank?).map!(&:to_i).delete_if{|i| i == 0}
是的,令人困惑的是它没有爆炸声,但它确实就地修改了。来自文档:
The array is changed instantly every time the block is called, not after the iteration is over.
关于ruby-on-rails - 链接方法时在哪里放置感叹号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39333939/