Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 如何在一条生产线上进行链移和取样_Ruby_Chaining - Fatal编程技术网

Ruby 如何在一条生产线上进行链移和取样

Ruby 如何在一条生产线上进行链移和取样,ruby,chaining,Ruby,Chaining,假设您有一个数组: a = [2, 5, 8] 要删除第一个元素,可以使用shift: a.shift # => 2 a # => [5, 8] 在a上执行sample没有问题: a.sample # => 5 这两种方法似乎不可能同时使用。你得到 a.shift.sample # => undefined method `sample' for 2:Fixnum 最有效、最简洁的方法是什么?上下文正在为Ruby tic-tac-toe程序遍历winning_组合

假设您有一个数组:

a = [2, 5, 8]
要删除第一个元素,可以使用
shift

a.shift # => 2
a # => [5, 8]
a
上执行
sample
没有问题:

a.sample # => 5
这两种方法似乎不可能同时使用。你得到

a.shift.sample # => undefined method `sample' for 2:Fixnum
最有效、最简洁的方法是什么?上下文正在为Ruby tic-tac-toe程序遍历winning_组合数组。我不想修改原始数组

使用以下命令:

a = [2, 5, 8]
p a.drop(1).sample #=>5
a = [2, 5, 8]
p a.drop(1).sample #=>8

这不会像
shift
那样修改数组,仅供参考。是的,我听到了。在这种情况下完全可以,因为WINNING_COMBOS多维数组是一个常量。@DavidPardy如果您不想修改源数组,正如您所评论的,请在您的帖子中也提到它。