0

如果我说...

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

...它给出 [1,2,3]。如果相反我说...

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

...每次我说 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 而不是 shuffle 本身的结果。

答案:

在 TryRuby.org 上使用在线解释器时出现问题。在我的 PC 上使用交互式 Ruby 解释器可以得到正确的结果。感谢大家的帮助!

4

3 回答 3

1

The problem occured when using the online interpreter on TryRuby.org. Using the interactive Ruby interpreter on my PC gives the correct result. Thanks to everyone for their help!

于 2013-02-20T10:50:55.160 回答
1

Do you need somethinglike this:

a = [1,2,3]

b = a.shuffle

puts b
于 2013-02-19T20:50:42.013 回答
0

a.shuffle返回 的改组a,但不会改变a自身,因此您需要将结果分配给不同的变量(或者a如果这是您想要的)。a.shuffle!如果要直接更改方法,则需要调用a

请参阅为什么在 Ruby 方法中使用感叹号?

于 2013-02-19T20:53:59.137 回答