有没有办法来抵消代码块中传递的值.
例如
C# - 这将始终打印5
for (int i = 0; i < 10; i++)
{
i=5
Console.WriteLine(i);
}
Run Code Online (Sandbox Code Playgroud)
Ruby - 这将只打印5次10次.
10.times do |i|
i = 5
puts i
end
Run Code Online (Sandbox Code Playgroud)
有没有办法得到| i | 回到5?
还有一个问题.你如何使.times块跳过(不会一直增加1)
不,你不能复位的计数器times,upto从块内等.
您可以使用redo重新启动循环的当前迭代,在这种情况下将具有类似的效果:
10.times do |i|
i = 5
puts i
redo
end
Run Code Online (Sandbox Code Playgroud)
这将永远打印5(尽管请注意,初始值i仍将0在每次迭代时).
如果您需要更多控制,则需要使用while循环.虽然我建议在大多数情况下你认为自己需要这个,但实际上并没有,而你只是从错误的角度来解决问题.