【问题标题】:Differences between key?, include? and member? in Ruby?键之间的差异?,包括?和会员?在红宝石?
【发布时间】:2017-04-19 01:46:10
【问题描述】:

对于这个例子哈希

hash = {:key=>"value"}

所有这些都是true:

hash.key?(:key)
hash.has_key?(:key)  #deprecated in favor of .key?
hash.include?(:key)
hash.member?(:key)

Ruby Docs 对所有三个都提供了相同的解释

"Returns `true` if the given key is present in ..."

我的问题是:在现实世界的 Ruby 使用中,每个都有特定的用例吗?或者,这仅仅是用多种方法来解决同一个问题的问题吗?

非常感谢您提供指向特定文档或参考的链接!

【问题讨论】:

    标签: ruby hash key


    【解决方案1】:

    如果您打开Ruby doc on Hashes,然后找到您的方法并打开他们的源代码,您可以看到具有相同的源代码。

    所以要以适当的方式回答一个问题:我敢称它们为别名(相同但不同的调用/命名),但我发现它们对提高我的代码的可读性很有用。

    【讨论】:

      【解决方案2】:

      Ruby 中的许多类都有多个方法,它们做的事情完全相同。这是为了适应由于接触或熟悉另一种编程语言而习惯于特定惯例的人。常见例子:

      "string".length == "string".size
      %w[ x ].length == %w[ x ].size
      
      %w[ a b c ].map(&:uppercase) == %w[ a b c ].collect(&:uppercase)
      

      大多数时候,文档会提供一些提示,表明这只是另一种方法的替代名称。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-04-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-03
        • 2012-03-02
        • 2012-10-28
        相关资源
        最近更新 更多