Ruby 与某些“Bignum”属性混淆
从医生那里 我找到了以下属性: “虽然Ruby 与某些“Bignum”属性混淆,ruby,Ruby,从医生那里 我找到了以下属性: “虽然Fixnum值是即时的,Bignum对象不是即时的-赋值和参数传递使用对象引用,而不是对象本身。” 事实上,据我所知,我们正在通过 对对象的引用,而不是对实际对象的引用。但我在这里 我不懂味道 当涉及Bignum对象的计算返回适合Fixnum的结果时,结果将自动转换 在C中,我发现了一些规则,比如自动转换。但是,这里的规则是否也适用于Ruby,或者这里专门为Ruby定义的其他规则 “对于按位操作和[],Bignum被视为具有2的补码表示的无限长位字符串。”
Fixnum
值是即时的,Bignum
对象不是即时的-赋值和参数传递使用对象引用,而不是对象本身。”
事实上,据我所知,我们正在通过
对对象的引用,而不是对实际对象的引用。但我在这里
我不懂味道
当涉及Bignum
对象的计算返回适合Fixnum
的结果时,结果将自动转换
在C
中,我发现了一些规则,比如自动转换。但是,这里的规则是否也适用于Ruby,或者这里专门为Ruby定义的其他规则
“对于按位操作和[],Bignum被视为具有2的补码表示的无限长位字符串。”
为什么只Bignum
,而不是Fixnum
或任何其他
有谁能用一些小的代码示例来帮助我详细理解这个主题吗?是已经实例化的不可变对象。你只需要使用它们。根据文件:
Fixnum对象具有立即值。这意味着当它们作为参数分配或传递时,传递的是实际对象,而不是对该对象的引用。分配不别名Fixnum对象。对于任何给定的整数值,实际上只有一个Fixnum对象实例,因此,例如,您不能向Fixnum添加单例方法
另一方面,Bignum是普通对象。你需要举例说明,你需要参考他们的作品,等等
这意味着当您执行x=5时,对象已经创建。您可以检查原语的对象id,如false或0、1、2、。。。有很多不同的,但总是一样的
> 1.object_id
=> 3
> x = 1
=> 1
> x.object_id
=> 3
这方面有两篇好文章:
> a = 10000000000
=> 10000000000
> a.class
=> Bignum
> b = a / 10
=> 1000000000
> b.class
=> Fixnum