我想了解我在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)
如其他答案中所述,在整数上调用.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)
| 归档时间: |
|
| 查看次数: |
35016 次 |
| 最近记录: |