【发布时间】:2013-02-19 20:44:17
【问题描述】:
如果我说...
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.shuffle!
=> [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 解释器可以得到正确的结果。感谢大家的帮助!
【问题讨论】:
-
a = [1,2,3]b= a.shuffle puts b?? -
保存订单是什么意思?我认为如果您提供一些周围的代码来定义和调用此代码等会有所帮助。
-
不是每次你
puts a都给你一个新订单;每次运行代码时它都会给你一个新的随机顺序,因为这会导致它再次成为shuffle!d。 -
我的意思是如果它把数组洗牌到 [3,1,2] 那么每次 a 被调用之后它应该给出 [3,1,2]。