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

    主站蜘蛛池模板: 久久国产精品成人免费| 亚洲人成网站在线在线观看| 久久国产免费直播| 国产精品亚洲w码日韩中文| 青青久久精品国产免费看| 亚洲成a人片在线播放| 精品国产日韩亚洲一区91| 国产公开免费人成视频| 美女羞羞免费视频网站| 久久亚洲国产成人影院网站| 亚洲精品视频免费观看| 亚洲成AV人片在线观看| 国产一精品一av一免费爽爽| 亚洲A∨无码一区二区三区| 亚欧在线精品免费观看一区| 亚洲一区二区三区无码国产 | 一级一级一片免费高清| 亚洲日韩中文在线精品第一| aaa毛片免费观看| 亚洲国产老鸭窝一区二区三区| 88av免费观看| 亚洲精品国产av成拍色拍| 亚洲国产人成中文幕一级二级| 九九热久久免费视频| 久久丫精品国产亚洲av不卡| 思思re热免费精品视频66| 色婷婷六月亚洲综合香蕉| 久久亚洲AV无码西西人体| 99精品在线免费观看| 亚洲乱色伦图片区小说 | 特级做A爰片毛片免费看无码 | 亚洲女同成av人片在线观看| 久久免费精彩视频| 国产日本亚洲一区二区三区| 成人亚洲网站www在线观看| 免费A级毛片无码A∨| 亚洲精品中文字幕| 亚洲人成网77777亚洲色| 免费国产黄线在线观看| gogo免费在线观看| 亚洲精品中文字幕无乱码|