在ruby循环中更改索引变量

我意识到这可能是反对
ruby原则并且可能看起来有点傻,但我很想知道是否有可能在ruby循环迭代期间修改索引变量.

在这个设计的例子中,在Java / C中使用for循环可以实现这种做法:

for (int k = 0; k < 10; k++)
{
   if (k == 5)
      k = 8;
}

同样,我知道可以使用Enumerable#each_with_index访问索引变量,但我感兴趣的是能够在此实例中更改变量而不是访问它.

最佳答案 实际上for语义如下:

for(executed_once_before_all; test; execute_every_loop) { /* code */ }

所以,在ruby中:

executed_once_before_all
while test do
  execute_every_loop
  # code
end 

所以你的例子是这样的:

k = 0
while k < 10 do
  k += 1
  k = 8 if (k == 5)
end         
点赞