在Ruby中,Array#reject的反义词是什么?

时间:2012-10-04 02:51:48

标签: ruby arrays

似乎可能是keep_if

如果是这样,为什么不称它为keep

2 个答案:

答案 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”,您明确指出存在一个条件(简单或复合),它将确定要保留的内容和要丢弃的内容。