1

我试图让一个数组为两个变量赋值。

test = "hello, my,name,is,dog,how,are,you"
testsplit = test.split "," 
testsplit.each do |x,y|
  puts y
end

我认为它会打印

my
is
how
you

但似乎这些值只传递给x而不是传递给y. 当我运行此代码时,y返回为空。

4

2 回答 2

5

Array#each每次迭代只会传递一个项目(因此每次传递都会从数组中为 x 分配一个值,而 y 将始终分配给 nil)。因此您需要使用Enumerable#each_slice参数为 2 的方法。

test = "hello, my,name,is,dog,how,are,you"
testsplit = test.split "," 

testsplit.each_slice(2) do |x,y|
  puts y
end

# >>  my
# >> is
# >> how
# >> you
于 2013-10-02T15:52:43.003 回答
4

您可以使用each_slice 一次获取 2 个元素:

test = "hello, my,name,is,dog,how,are,you"
testsplit = test.split "," 

testsplit.each_slice(2) do |x,y|
  puts y
end

# =>  my, is, how, you
于 2013-10-02T15:52:28.943 回答