如果我2.size
,为什么我会将8
作为输出?不应该抛出错误吗?
2.length
抛出错误
NoMethodError:2的未定义方法`count':Fixnum
2.count
NoMethodError:2的未定义方法`count':Fixnum
2.size
是否计算位数?
0xFFF0000.size
也会返回8
。
11111111111111111111.size
为8
,而1111111111111111111111111111111111111111111111111111111111111111111111111111.size
为32
。
毕竟可能是计算位数。
答案 0 :(得分:3)
只是returns the number of bytes used for the internal representation of the number。
如果数字太大,Ruby会自动创建Bignums
而不是Fixnum
。
foo = 1111111111111111111
bar = 11111111111111111111
baz = 11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
foo.class # => Fixnum
foo.size # => 8
bar.class # => Bignum
bar.size # => 8
baz.class # => Bignum
baz.size # => 63