ruby - 在 ruby​​ 循环中更改索引变量

标签 ruby iteration

我意识到这可能违反 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 = 8 if (k == 5)
  k += 1
end         

关于ruby - 在 ruby​​ 循环中更改索引变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16975349/

相关文章:

ruby-on-rails - 将 Rails 中的两个模型组合为一个表单

list - 如何在 Haskell 中定义对函数的递归调用列表

javascript - 是否可以将 id 名称分配给变量并在 javascript 的函数中使用它

python - 查找大量键 : dictionary vs. NumPy 数组

ruby - Twitter gem 用法 - 法拉第生成器错误

ruby - 在优胜美地安装 Ruby 时出错

ruby - Mechanize HTTP 未找到 404 链接

mysql - 使用 MySQL 和 Rails 设置 Dokku

python - 遍历包含 8526 个项目的列表,获取索引超出范围错误

c++ - 使用迭代或简单的循环计数器哪个更快?