【问题标题】:What is the opposite of Array#reject in ruby?Ruby 中 Array#reject 的反义词是什么?
【发布时间】:2012-10-04 02:51:48
【问题描述】:

好像是keep_if

如果是这样,为什么不叫keep

【问题讨论】:

  • 看看ruby-doc.org/core-1.9.3/Array.html,很明显keep_if确实是相反的(相同的逻辑,但将比较从true翻转到false)。这是关于方法名称的问题吗?
  • @bdares keep_ifreject 的逻辑不同。不过,它可能与reject! 具有相同的逻辑。

标签: ruby arrays


【解决方案1】:
  • reject 的反义词是select(返回一个新数组)
  • reject! 的反义词是select!(就地编辑数组)
  • keep_if 的反义词是delete_if(就地编辑数组)

【讨论】:

    【解决方案2】:

    我认为这与经过深思熟虑的语义有关,我认为它是正确的。假设您已经有一组东西,“t1、t2 和 t3”;如果你拒绝一个子集,你说“我拒绝 t1 和 t2”。您没有提及 t3,因为它不受您的操作(您的拒绝)的影响:默认为“保留”。但如果你表达你打算保留的东西,而你只是说“我保留了t1和t2”,那么t3的状态就会受到质疑:毕竟你已经有了t1和t2,那还有什么意义呢?重新保留它们(它们已经处于默认状态,“保留”),特别是因为您隐含地也保留了 t3.通过使用语法“keep_if”,您明确表明存在一个条件(简单或复合),它将确定要保留的内容和要丢弃的内容。

    【讨论】:

      猜你喜欢
      • 2010-09-23
      • 1970-01-01
      • 2011-01-04
      • 2014-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-07
      相关资源
      最近更新 更多