<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    莊周夢蝶

    生活、程序、未來
       :: 首頁 ::  ::  :: 聚合  :: 管理

    關于Object.object_id方法

    Posted on 2009-05-24 12:46 dennis 閱讀(1757) 評論(0)  編輯  收藏 所屬分類: 動態語言
        Ruby中的Object.object_id是返回一個Fixnum類型的標識符來代表一個對象。沒有兩個active的對象的object_id是一樣的,如:
    a="1.8.6"
    b
    ="1.8.6"
    a.object_id  
    => 24393910
    b.object_id  
    => 24390830
        盡管a==b,然而兩者的object_id是不同。
        但是這里有兩種例外情況,對于常量,哪怕你將它賦給不同的變量,它們的object_id是一樣的:

    a=RUBY_VERSION
    b
    =RUBY_VERSION
    a.object_id  
    => 21628310
    b.object_id  
    => 21628310

    C="hello" 
    a=C 
    b=C 
    a.object_id =>  24243480 
    b.object_id =>  24243480 
       
        除此之外,對于symbol類型,返回的也將是同一個object_id:

    a=:name
    b
    =:name
    a.object_id 
    => 34258
    b.object_id 
    => 34258
       
        為什么會出現這種情況?查看源碼可知:
    VALUE
    rb_obj_id(VALUE obj)
    {
     
       
    if (TYPE(obj) == T_SYMBOL) {
           
    return (SYM2ID(obj) * sizeof(RVALUE) + (4 << 2)) | FIXNUM_FLAG;
       }
       
    if (SPECIAL_CONST_P(obj)) {
           
    return LONG2NUM((long)obj);
       }
       
    return (VALUE)((long)obj|FIXNUM_FLAG);
    }
        Object.object_id方法對這兩種情況做了特殊處理,常量和symbol都應當是唯一的。

    主站蜘蛛池模板: 亚洲国产精品SSS在线观看AV| 亚洲深深色噜噜狠狠网站| 99re这里有免费视频精品| 亚洲夂夂婷婷色拍WW47| 精品亚洲一区二区三区在线播放| 久久不见久久见免费视频7 | 精品久久久久亚洲| 亚洲AV永久无码精品一百度影院| 免费电视剧在线观看| 一区二区三区免费在线观看| 亚洲国产精品成人精品软件| 久久精品国产精品亚洲| 无码日韩精品一区二区免费| 成人毛片100免费观看| 亚洲日韩国产AV无码无码精品| 亚洲国产无套无码av电影| 女人与禽交视频免费看| 日本免费高清视频| 日本免费精品一区二区三区| 亚洲伊人久久大香线蕉啊| 国产自偷亚洲精品页65页| 免费观看的a级毛片的网站| 日韩中文字幕免费视频| 无码AV动漫精品一区二区免费 | a在线视频免费观看在线视频三区| 亚洲日本香蕉视频| 亚洲成AV人片在WWW色猫咪| 亚洲第一页综合图片自拍| 18禁超污无遮挡无码免费网站国产 | 在线观看的免费网站| 你是我的城池营垒免费看 | 国产亚洲福利一区二区免费看| 亚洲欧洲综合在线| 亚洲成a人片在线观看无码| 亚洲国产激情一区二区三区| 成人奭片免费观看| 在线永久免费的视频草莓| 99久久免费观看| 秋霞人成在线观看免费视频| 精品免费久久久久国产一区| 全黄A免费一级毛片|