2017-01-13 9 views
0

が表示されていません。間違っているto_sメソッドは、私は、配列を持って正しい結果に

[1, \"2\", 3.0, [\"a\", \"b\"], \"dog\"]

、与えることとしている:私のコマンドプロンプトでarray.to_sを入力[1, "2", 3.0, ["a", "b"], "dog"]

は私にこれを提供します私にこの:

123.0abdog

誰かが私に説明するだろうなぜ私は正しい結果を得ていないのですか?

+2

'。今度は 'inspect'のように動作します。 – tadman

+0

どうやら古いRuby版の古いチュートリアルを読んでいるようです。 –

答えて

3

あなたは、おそらく、配列参加したい:異なっ

[1, "2", 3.0, ["a", "b"], "dog"].join 
=> "123.0abdog" 

to_s作品を、docsによると、それは、配列の文字列表現を作成します。

[ "a", "b", "c" ].to_s  #=> "[\"a\", \"b\", \"c\"]" 
+0

OPは、なぜ彼らが 'to_s'で希望の結果を得ていないのか尋ねていました。 'to_s'がどのように異なって動作するか説明してください。 –

+0

クール、私はあなたが最初に平らにしなければならないだろうと思った。 –

3

それはあなたにを与えている何正確な結果はです。 .to_sは、それを呼び出したオブジェクトの文字列表現のみを返します。この場合、文字列として表されたときに配列がどのように見えるかを返します。これは、すべての要素を文字列に平坦化して組み合わせることを意味するのではなく、一般的にそのような要素を意味するものではありません。

あなたはその結果を得るためにいくつかのコードを実行したい場合は、試してみてください。

[1, "2", 3.0, ["a", "b"], "dog"].flatten.join 
0

をあなたが最初に平らに使用BBYネストされた配列を取り除く必要があります。次に、それを文字列に結合することができます。ルビー1.8日で、このバックのように動作するために使用されるが、事ではなくなったので、それは長いですto_s`

[1, "2", 3.0, ["a", "b"], "dog"].flatten.join