关键的区别?包括?和会员?在Ruby?

zei*_*hef 4 ruby hash key

对于此示例哈希

hash = {:key=>"value"}
Run Code Online (Sandbox Code Playgroud)

所有这些都是true:

hash.key?(:key)
hash.has_key?(:key)  #deprecated in favor of .key?
hash.include?(:key)
hash.member?(:key)
Run Code Online (Sandbox Code Playgroud)

Ruby Docs为这三个提供相同的解释

"Returns `true` if the given key is present in ..."
Run Code Online (Sandbox Code Playgroud)

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

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

Saš*_*vić 7

如果您在Hashes上打开Ruby doc,那么找到您的方法并打开他们可以看到具有相同源代码的源代码.

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


tad*_*man 5

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

"string".length == "string".size
%w[ x ].length == %w[ x ].size

%w[ a b c ].map(&:uppercase) == %w[ a b c ].collect(&:uppercase)
Run Code Online (Sandbox Code Playgroud)

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