我正在寻找一种有效的方法来迭代对象数组,并根据某些条件更新属性或删除对象或保持原样。例如,假设我有一个Persons数组,每个人都有一个名字和年龄,我想迭代数组并删除40岁以上的人,将“_child”附加到10岁以下的人的名字,并保留其余的人。我可以做到:
persons.delete_if{|p| p.age > 40} persons.each{|p| p.name = "#{p.name}_child" if p.age < 10}
但有没有一个聪明的方法来合并它们呢?
sr4lhrrt1#
其实有(ruby 2.7+)
persons = persons.filter_map do |p| if p.age <= 40 p.name += "_child" if p.age < 10 p end end
但我个人会把它们分开
persons = persons .reject{|p| p.age > 40} .each{|p| p.name += "_child" if p.age < 10 }
1条答案
按热度按时间sr4lhrrt1#
其实有(ruby 2.7+)
但我个人会把它们分开