0

私が言うなら...

a = [1,2,3]
a.shuffle
puts a

...それは[1,2,3]を与えます。代わりに私が言うなら...

a=[1,2,3]
a.shuffle!
puts a

...それは私が置くと言うたびに私に新しい注文を与えます。だから私の質問は、シャッフルされた配列が入れられた順序をどのように保存するのですか?初めて[3,1,2]を返す場合は、この順序を維持する必要があります。これは意味がありますか?

これが私が話していることの例です。bを呼び出すたびに、異なる結果が得られます。

> a=[1,2,3]
=> [1, 2, 3]
> b=a.shuffl­e!
=> [1, 3, 2]
> b
=> [1, 2, 3]
> b
=> [2, 1, 3]
> b
=> [1, 3, 2]
> b
=> [3, 2, 1]

「b」は、シャッフル自体の結果ではなく、関数a.shuffleを参照しているようです。

答え:

TryRuby.orgでオンラインインタプリタを使用しているときに問題が発生しました。PCでインタラクティブRubyインタープリターを使用すると、正しい結果が得られます。みんなの助けに感謝します!

4

3 に答える 3

1

このようなものが必要ですか:

a = [1,2,3]

b = a.shuffle

puts b
于 2013-02-19T20:50:42.013 に答える
1

TryRuby.orgでオンラインインタプリタを使用しているときに問題が発生しました。PCでインタラクティブRubyインタープリターを使用すると、正しい結果が得られます。みんなの助けに感謝します!

于 2013-02-20T10:50:55.160 に答える
0

a.shuffleのシャッフルを返しますが、それ自体aは変更されないaため、結果を別の変数に割り当てる必要があります(または、それが必要aな場合は)。a.shuffle!メソッドを直接変更する場合は、を呼び出す必要がありますa

Rubyメソッドで感嘆符が使用されるのはなぜですか?を参照してください。

于 2013-02-19T20:53:59.137 に答える