数字中的.size对红宝石意味着什么?

时间:2017-03-29 10:13:03

标签: ruby

为什么我的红宝石给出的数字大小不正确?这个数字并不重要。对于大小,输出始终为4。那是什么意思?我一直以为它应该给出数字位数。

number = 14
print number
print "\n"
print number.size

输出:

14
4

ruby​​版

ruby 2.1.8p440 (2015-12-16 revision 53160) [i386-mingw32]

2 个答案:

答案 0 :(得分:7)

我总是建议检查您不确定使用以下方案的方法:

  1. 检查方法的来源(使用Object#method):

    <html>
    <head>
      <style>
        html {
          background: #F7F7F7;
          color: red;
        }
        li {
          animation: fadein 2s;
        }
    
        @keyframes fadein {
            from { opacity: 0; }
            to   { opacity: 1; }
        }
      </style>
    </head>
    <body>
      <script>
        var app = Elm.Main.fullscreen()
      </script>
    </body>
    </html>
    
  2. 打开文档并了解它对number.method(:size) #=> #<Method: Fixnum#size> 及其工作原理的作用。

    2.1如果您正在使用IRB,则可以运行Fixnum#size以在控制台中获取文档 2.2如果你正在使用撬,你可以使用help 'Fixnum#size'(首先安装show-doc Fixnum#size gem)

  3. 在Ruby 2.1.8中,方法在Fixnum#size中定义。

    从Ruby 2.4开始,它定义于 Integer#size

      

    返回int。

    的机器表示中的字节数

答案 1 :(得分:3)

你混淆了两种方法String#size

  

返回str的字符长度。

Fixnum#size

  

返回fix的机器表示中的字节数。

14是类Fixnum的对象,因此当您在其上调用size时,您将获得该数字的机器表示中的字节数。

如果您想知道数字中有多少位数,您可以先将其转换为字符串,然后在其上调用size

14.to_s
# => "14"
14.to_s.size
#=> 2
12345.to_s.size
#=> 5