我认为这与深思熟虑的语义有关,我认为这是正确的。假设你已经有了一组东西,“t1,t2和t3”;如果你拒绝一个子集,你会说“我拒绝t1和t2”。你不提及t3,因为它不受你的行动(拒绝)的影响:默认情况下是“保留”。但是,如果你要表达你想保留的内容,只说“我保留t1和t2”,那么t3的状态就会受到质疑:毕竟,你已经有了t1和t2,那么说你要保留它们有什么意义呢(它们已经处于默认状态“保留”),特别是你还隐含地保留了t3。通过使用“keep_if”语法,你明确表示存在一个条件(简单或复合条件)来确定哪些内容应该被保留,哪些应该被丢弃。
keep_if
实际上是相反的(逻辑相同但将比较从true
反转为false
)。那么这是否是关于方法名称的问题? - user684934keep_if
的逻辑与reject
不同。它可能与reject!
有相同的逻辑,但并非完全相同。 - Andrew Grimm