Ruby Hash 的这两种方法有区别吗?还是只是“多一种方法而已”?我没有看出两者之间有实质性的差别。
谢谢。
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;
}
Hash.instance_method(:has_key?) == Hash.instance_method(:member?) #=> true
意思是:通过Ruby编程语言中的代码可以证明,哈希表(Hash)中的方法has_key?和member?是等价的。 - Stefan