在Ruby中i.to_s是什么意思?

Kis*_*tty 12 ruby

我想了解我在Google中找到的一段代码:

i.to_s
Run Code Online (Sandbox Code Playgroud)

在上面的代码i是一个整数.根据我的理解i,正在转换成一个字符串.真的吗?

Ray*_*oal 25

最好说这是一个返回整数字符串表示的表达式i.整数本身不会改变.#pedantic.

在irb

>> 54.to_s
=> "54"
>> 4598734598734597345937423647234.to_s
=> "4598734598734597345937423647234"
>> i = 7
=> 7
>> i.to_s
=> "7"
>> i
=> 7
Run Code Online (Sandbox Code Playgroud)


koa*_*ima 7

如其他答案中所述,在整数上调用.to_s将返回该整数的字符串表示形式.

9.class         #=>  Fixnum
9.to_s          #=>  "9"
9.to_s.class    #=>  String
Run Code Online (Sandbox Code Playgroud)

但是您也可以将参数传递给.to_s,以将其从默认的Base = 10更改为从Base 2到​​Base 36的任何内容.以下是文档:Fixnum to_s.因此,例如,如果您想将数字1024转换为等价的二进制(也就是Base 2,它只使用"1"和"0"来表示任何数字),您可以这样做:

1024.to_s(2)    #=> "10000000000"
Run Code Online (Sandbox Code Playgroud)

当您想要生成字母和数字的随机组合时,转换为Base 36非常有用,因为它使用0到9之间的每个数字,然后是a到z的每个字母进行计数.维基百科上的基础36解释.例如,下面的代码将为您提供一个长度为1到3个字符的字母和数字的随机字符串(将3更改为您想要的任何最大字符串长度,这会增加可能的组合):

rand(36**3).to_s(36)
Run Code Online (Sandbox Code Playgroud)

为了更好地理解如何在不同的基本系统中编写数字,将此代码放入irb,更改要了解的基本系统的括号中的36.结果打印输出将从0到35计数,您选择的基本系统

36.times {|i| puts i.to_s(36)}
Run Code Online (Sandbox Code Playgroud)