似乎可能是keep_if
。
如果是这样,为什么不称它为keep
?
答案 0 :(得分:87)
reject
的反面是select
(返回一个新数组)reject!
的反面是select!
(编辑数组)keep_if
的反面是delete_if
(编辑数组)答案 1 :(得分:2)
我认为这与深思熟虑的语义有关,我认为这是正确的。假设你已经有了一套东西,“t1,t2和t3”;如果你拒绝一个子集,你说“我拒绝t1和t2”。你没有提到t3,因为它不受你的行动影响(你的拒绝):默认是“保持”。但如果你要表达你想要保留的内容,而你只是说“我保持t1和t2”,那么t3的状态就会受到质疑:毕竟,你已经拥有了t1和t2,那么你说的是什么呢?保持它们(它们已经处于默认状态,“保持”),特别是因为你隐含地保持t3。通过使用语法“keep_if”,您明确指出存在一个条件(简单或复合),它将确定要保留的内容和要丢弃的内容。