`size`返回奇怪的值

时间:2015-09-15 16:40:41

标签: ruby

如果我2.size,为什么我会将8作为输出?不应该抛出错误吗?

2.length抛出错误

  

NoMethodError:2的未定义方法`count':Fixnum

2.count

  

NoMethodError:2的未定义方法`count':Fixnum

2.size是否计算位数?

0xFFF0000.size也会返回8

11111111111111111111.size8,而1111111111111111111111111111111111111111111111111111111111111111111111111111.size32

毕竟可能是计算位数。

1 个答案:

答案 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