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

时间:2011-11-21 08:43:46

标签: ruby

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

i.to_s

在上面的代码i中是一个整数。根据我的理解,i正被转换为字符串。这是真的吗?

3 个答案:

答案 0 :(得分:25)

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

在irb

>> 54.to_s
=> "54"
>> 4598734598734597345937423647234.to_s
=> "4598734598734597345937423647234"
>> i = 7
=> 7
>> i.to_s
=> "7"
>> i
=> 7

答案 1 :(得分:7)

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

9.class         #=>  Fixnum
9.to_s          #=>  "9"
9.to_s.class    #=>  String

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

1024.to_s(2)    #=> "10000000000"

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

rand(36**3).to_s(36)

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

36.times {|i| puts i.to_s(36)}

答案 2 :(得分:2)

这是正确的。 to_s将任何对象转换为字符串,在这种情况下(可能)是一个整数,因为该变量被称为i