Ruby Hash的两种方法之间有什么区别,还是只是"有不止一种方法可以做到这一点"?
我看不出两者之间有任何可衡量的差异。
谢谢
根据 Ruby 源代码,has_key?
、key?
、include?
和 member?
是相同的实现。
要查看方法定义的源代码,请参阅文档,找到您要查找的方法,然后单击该方法以展开以查看实际源代码:
https://ruby-doc.org/core-2.5.0/Hash.html#method-i-member-3F
rb_hash_has_key(VALUE hash, VALUE key)
{
if (!RHASH(hash)->ntbl)
return Qfalse;
if (st_lookup(RHASH(hash)->ntbl, key, 0)) {
return Qtrue;
}
return Qfalse;
}
https://ruby-doc.org/core-2.5.0/Hash.html#method-i-has_key-3F
rb_hash_has_key(VALUE hash, VALUE key)
{
if (!RHASH(hash)->ntbl)
return Qfalse;
if (st_lookup(RHASH(hash)->ntbl, key, 0)) {
return Qtrue;
}
return Qfalse;
}