`
RednaxelaFX
  • 浏览: 3046551 次
  • 性别: Icon_minigender_1
  • 来自: 海外
社区版块
存档分类
最新评论

随便一记,“引用类型”

    博客分类:
  • Ruby
 
阅读更多
刚才在问答频道回答一个问题,用了类似这样的代码举例:
irb(main):001:0> 1.object_id
=> 3
irb(main):002:0> 1.value
NoMethodError: undefined method `value' for 1:Fixnum
        from (irb):2
irb(main):003:0> class Fixnum
irb(main):004:1>   attr_accessor :value
irb(main):005:1> end
=> nil
irb(main):006:0> x = 1
=> 1
irb(main):007:0> x.object_id
=> 3
irb(main):008:0> x.value = 'original value'
=> "original value"
irb(main):009:0> def foo(n)
irb(main):010:1>   puts "n.object_id = #{n.object_id}"
irb(main):011:1>   n.value = 'foo value'
irb(main):012:1> end
=> nil
irb(main):013:0> foo(x)
n.object_id = 3
=> "foo value"
irb(main):014:0> x.object_id
=> 3
irb(main):015:0> x.value
=> "foo value"
irb(main):016:0> 1.object_id
=> 3
irb(main):017:0> 1.value
=> "foo value"
irb(main):018:0> 2.object_id
=> 5
irb(main):019:0> 2.value
=> nil

MRI的object_id就是VALUE的值。因为Fixnum是(n << 1) | 1的,所以1的object_id是3,嗯都没问题。
于是Fixnum还是应该看作“引用类型”……吧。虽然有些很神奇的特性 XD
分享到:
评论

相关推荐

    一看就懂:图解C#中的值类型、引用类型、栈、堆、ref、out

    还有托管堆,栈,ref,out等等概念也是每个C#程序员都会接触到的概念,也是C#程序员面试经常考到的知识,随便搜搜也有无数的文章讲解相关的概念,貌似没写一篇值类型,引用类型相关博客的不是好的C#程序员。...

    Java面向对象值传递和引用传递

    值传递和引用传递的区别可以用一个简单的例子来解释:值传递是一样的设计图纸,你可以根据这个设计图纸盖一个新的房子,然后你可以随便修改这个房子,而不影响原来的房子。引用传递是把家门牌号告诉你,然后你来我家...

    Android—ADT模拟新浪微博随便看看

    本项目“Android—ADT模拟新浪微博随便看看”旨在通过重写ListView控件,帮助开发者深入理解和灵活运用ListView的功能,以实现类似新浪微博“随便看看”的功能。在这个过程中,我们将探讨ListView的工作原理、自定义...

    自定义设置php版本(700个PHP版本随便切换)共1页

    例如,PHP 5.6引入了命名空间,增强了错误处理,而PHP 7则实现了大幅度的性能提升,引入了更严格的类型检查和空值解引用。PHP 8则进一步带来了更多的新特性,如Just-In-Time (JIT) 编译器,命名参数等。因此,根据...

    Listview模拟的新浪随便看看界面

    ViewHolder是一个内部类,持有每个列表项视图的引用,避免每次创建新视图时查找子视图,从而提高性能。 5. **ListView的优化** - 使用convertView复用视图,减少内存分配和布局构建。 - 数据量大时,考虑使用...

    Vc常用快捷键,随便看看

    12. **Ctrl+'Num+' 和 Ctrl+'Num-'**: 分别用于显示下一个或上一个符号的定义或引用,提高代码导航效率。 13. **Ctrl+J 和 Ctrl+K**: 快速查找上一个/下一个预编译条件,这对于处理包含条件预编译的代码非常有用。 ...

    计算机应用基础.docx

    #### 四、Excel 2010中的单元格引用类型 **知识点:** 1. **Excel中单元格的引用方式包括:** - **相对引用**:在复制公式时,相对引用会根据公式所在位置自动调整。 - **混合引用**:只锁定行或列的引用。 - **...

    Java内部类总结,内部类的共同特征,内部类的分类等

    1. 编译器自动为内部类添加一个成员变量,这个成员变量的类型和外部类的类型相同,这个成员变量就是指向外部类对象的引用。 2. 编译器自动为内部类的构造方法添加一个参数,参数的类型是外部类的类型, 在构造方法...

    超级有影响力霸气的Java面试题大全文档

     SessionBean: Stateless Session Bean 的生命周期是由容器决定的,当客户机发出请求要建立一个Bean的实例时,EJB容器不一定要创建一个新的Bean的实例供客户机调用,而是随便找一个现有的实例提供给客户机。...

    将一个工程的对话框及程序移动至另一程序

    在目标工程中,需要创建一个新的Dialog,名字和控件随便,可以根据需要来命名和设计控件的布局。 知识点五:修改Resource.h和*.rc文件 在打开Resource.h和*.rc文件中,需要找到对应于Dialog ID的部分,在BEGIN和...

    VS2019添加引用出错:对COM组件的调用返回了错误HRESULT E_FAIL(未能完成操作未指定的错误)

    必须装一个.net SDK 随便那个版本都可以 如图: 装完之后需要更新一下缓存,不然也无法使用。如果是全新安装的时候就装了。就不用执行此步骤。 1.以管理员身份打开 Developer Command Prompt for VS 2019(vs2019...

    精通Javascript系列之数据类型 字符串

    js一共有9种数据类型,分别是:未定义(undefined)、空(null)、布尔型(boolean)、字符串(string)、数值(number)、对象(object)、引用(reference)、列表(completion)。其中后3种仅仅作为JS运行中间结果的...

    2021-2022计算机二级等级考试试题及答案No.11064.docx

    根据给定文件的信息,我们可以总结出一系列与计算机二级等级考试相关的知识点,具体包括网络分类、版权法基础、编程语言逻辑、数据库操作、用户权限管理、SQL查询、对象引用、控件类型、数据处理命令、类定义规则、...

    ddd.rar_visual c

    【描述】:“随便上传的随便上传的随便上传的随便上传的” 这句描述虽然没有提供具体信息,但可以推测可能是指用户随意上传的一个文件集合,其中可能包含了各种与Visual C++相关的代码、项目文件、库、文档或其他...

    jquery仿微博表情插件

    图片类型的表情可以存储在服务器上,然后通过HTML img标签引用;Unicode字符则可以直接在文本中插入,浏览器会根据字体库解析成对应的图形。本插件可能会涉及到这两种形式。 3. **表情面板设计**:表情面板通常包含...

    股票自定义指标编写教程.doc

    例如:每个函数需要的参数可能是变量也可能是常量,1 / 21 不能随便乱用,函数计算的结果一般是一个变量。 C. 特殊数据引用:在编制公式的过程当中,需要使用另外一个指标的值,如果按照通常的做法,重新编写过这个...

    leetcode卡-leetcode-practice::cloud:Chittyのleetcode刷题记录:writing_hand:

    leetcode卡 Leetcode-practice 书到用时方恨少,练得少就想不到。...//引用类型用toEqual() expect(xxx(输入)).toBe(输出) }) 测试:npm test 源码目录 按类型分类,参看Code下各文件夹 正则表达说明参看

    VCom.rar_vcom

    VCom,可能是某个特定的COM组件或者与COM相关的库,根据标题“VCom.rar_vcom”和描述“随便写的一个COM的用法,这里只有3种,基本覆盖了常用的类型”,我们可以推测这个压缩包可能包含了关于VCom组件的示例代码或...

    python-语法入门笔记

    在 Python 中,字面量是一个个的值,比如:1, 2, 3, 4, “hello”等。变量可以用来保存字面量,并且变量中保存的字面量是不定的。本身没有任何意义,会根据不同的字面量表示不同的意思。在开发时,很少使用字面量,...

Global site tag (gtag.js) - Google Analytics