Ruby Hash类的方法has_key? vs方法成员?

时间:2018-03-20 13:07:11

标签: ruby methods hash

Ruby Hash的两种方法之间是否有任何区别,或者它只是“有多种方法可以做到这一点”?我看不出两者之间有任何可测量的差异。
谢谢,

2 个答案:

答案 0 :(得分:8)

根据Ruby sourcehas_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;
    }