我有一行代码遍历数组并拒绝任何空元素:
survey.reject!(&:empty?).map! { |feedback| %(_"#{feedback}"_) }
如果整个数组为空,则按预期工作。如果数组中的一个元素不是空的,那么我将得到一个错误
map!
不存在。但是,这没有问题:
survey.map! { |feedback| %(_"#{feedback}_") }
reject
函数在整个数组为空时工作,map!
版本在数组不为空时工作。如何才能最好地整合这些内容? 最佳答案
使用内建修饰符时必须小心作为the documentation for reject!
says:
删除块计算为true的self
的每个元素,如果没有进行任何更改,则返回nil
。
由于这个特性,你不能像可靠地复制版本那样链接它们。
你能做的就是用两条线:
survey.reject!(&:empty?)
survey.map! { |feedback| %(_"#{feedback}"_) }
或者可以链重新分配:
survey = survey.reject(&:empty?).map { |feedback| %(_"#{feedback}"_) }
关于ruby-on-rails - 如何过滤出数组中的空元素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38983589/