在ruby中逐个列出两个列表

Nac*_*321 0 ruby arrays

我有一个看起来像这样的列表:

list = 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'
Run Code Online (Sandbox Code Playgroud)

我想逐个迭代它,这样我就可以在同一个迭代中修改'a'和'b'.这将是我需要做的java等价物:

for (int i = 0; i < list.size(); i+=2){
    System.out.println(list.get(i) + list.get(i+1));
}
Run Code Online (Sandbox Code Playgroud)

Ily*_*lya 6

你可以使用each_slice它:

list.each_slice(2) { |first, second| p first + second }
=> "ab"
"cd"
"ef"
"gh"
Run Code Online (Sandbox Code Playgroud)

使用时each_slice(2),在每次迭代时传入像["a","b"]这样的块数组.数组的大小取决于each_slice参数.然后,在块中,接下来发生:

first, second = ["a", "b"]
first 
#=>"a"
second
#=>"b"
Run Code Online (Sandbox Code Playgroud)

  • ......或`{|对| pair.join}`.(旁白:当我投票时它上升了两个,所以我必须在之前意外地投票 - 如果你想知道的话.) (2认同)

Sim*_*tti 5

你可以使用 Enumerable#each_slice

list.each_slice(2) { |x,y| p "#{x} #{y}" }
Run Code Online (Sandbox Code Playgroud)

  • 它是一种有效的数组defenition语法 (4认同)