2011-11-21 3 views
10

私はグーグルで見つけたコードの一部理解したい:上記のコードiRubyのi.to_sの意味は?

i.to_s 

は整数です。私の理解によれば、iは文字列に変換されています。本当?

+1

を選んだ、 'to_s'メソッドは、オブジェクトの文字列表現を返します(数の場合には' i')。しかし、そのような質問のために私はRuby [documentation](http://www.ruby-doc.org/)を使うことをお勧めします。そこにある標準ライブラリの各メソッドのドキュメントを見つけることができます。 –

+0

本当にありがとう –

答えて

20

これは、整数iの文字列表現を返す式です。整数自体は変更されません。 #pedantic。 IRB

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

これは間違いありません。変数がiと呼ばれるので、to_sは任意のオブジェクトを文字列に変換します。この場合(おそらく)整数です。

6

他の回答で述べたように、整数に.to_sを呼び出すと、その整数の文字列表現を返します。

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

しかし、あなたはまた、ここではベース36にベース2から何かに= 10デフォルトのベースからそれを変更する.to_sする引数を渡すことができますドキュメントです:Fixnum to_s

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

:あなたがそれに番号1024を変換したいのであれば、たとえば、あなたが行うことができます(のみ「1」と「0」、任意の数を表すために使用する別名ベース2、)バイナリの等価です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)}