<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都應當是唯一的。

    主站蜘蛛池模板: 亚洲ⅴ国产v天堂a无码二区| 亚洲乱码无码永久不卡在线| 亚洲一级特黄特黄的大片| 少妇太爽了在线观看免费视频| 亚洲精品午夜国产VA久久成人| 国产免费MV大全视频网站| 亚洲色精品vr一区二区三区| 亚洲国产免费综合| 亚洲人JIZZ日本人| 99久久国产精品免费一区二区| 国产亚洲美女精品久久久久狼| 国产拍拍拍无码视频免费| 亚洲宅男永久在线| 无码av免费毛片一区二区| 国产AV旡码专区亚洲AV苍井空| 国产男女性潮高清免费网站 | 久久综合图区亚洲综合图区| 免费无码又爽又刺激高潮软件| 亚洲成年轻人电影网站www | 午夜两性色视频免费网站| 久久久久亚洲精品无码网址色欲| 又粗又大又猛又爽免费视频| 99re6在线视频精品免费| 久久精品国产亚洲AV大全| 四虎影视www四虎免费| 一级做a免费视频观看网站| 亚洲VA成无码人在线观看天堂| 国产成人精品免费视频网页大全| 亚洲精品无码aⅴ中文字幕蜜桃| 亚洲国产精品碰碰| 最近2019免费中文字幕6| 99久久国产亚洲综合精品| 亚洲国产一区视频| h片在线免费观看| 国产产在线精品亚洲AAVV| 亚洲精品视频在线| 国产色婷婷精品免费视频| 欧洲人免费视频网站在线| 亚洲国产av玩弄放荡人妇 | 综合久久久久久中文字幕亚洲国产国产综合一区首 | 亚洲风情亚Aⅴ在线发布|