Ruby Hash的两种方法之间是否有任何区别,或者它只是“有多种方法可以做到这一点”?我看不出两者之间有任何可测量的差异。
谢谢,
答案 0 :(得分:8)
根据Ruby source,has_key?
,key?
,include?
和member?
是相同的实现。
答案 1 :(得分:2)
要查看方法定义的源代码,请参阅文档,找到您要查找的方法,然后单击要展开的方法以查看实际的源代码:
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;
}