Ruby 具有灵活停止变量的For循环
我需要写一个循环Ruby 具有灵活停止变量的For循环,ruby,Ruby,我需要写一个循环 for x in (1..y) 其中y变量可以以某种方式更改。我该怎么做 例如: for x in (1..y/x) 但它不起作用 我认为您可能对返回值感到困惑。这实际上很好,只是返回值等于原始范围 y = 4 for x in (1..y) puts x end # 1 # 2 # 3 # 4 #=> 1..4 这是一个。通常我们会使用带有保护子句的循环do: x = 1 loop do break if x >= y x += 1 ...
for x in (1..y)
其中y
变量可以以某种方式更改。我该怎么做
例如:
for x in (1..y/x)
但它不起作用 我认为您可能对返回值感到困惑。这实际上很好,只是返回值等于原始范围
y = 4
for x in (1..y)
puts x
end
# 1
# 2
# 3
# 4
#=> 1..4
这是一个。通常我们会使用带有保护子句的
循环do
:
x = 1
loop do
break if x >= y
x += 1
...
end
确保y
大于x
,否则它将无法执行任何操作y
可以根据需要进行更改,只要大于x循环就会继续。只要y
下降到x
以下,循环将在下一次迭代中终止
注意:我使用
=
,因为平等性测试是一个等待中的bug。有时,我们试图比较x
开始大于y
的位置,或者我们增加一个浮点,将其与一个整数或另一个浮点进行比较,并使用=
,但从不点击导致循环跑掉的神奇的“相等”。相反,总是检查大于或等于结束循环。您能告诉我们这个用例吗?这是行不通的,因为x只是在循环中定义的,所以不能使用x来定义它何时停止,并且看起来y不是在这里定义的。在露比的大多数情况下,有更好的方法来循环收集一个集合。您必须在Sube中围绕<代码> y/x<代码>,以便在那里工作。您可以考虑这样做(例如):<代码> y=10;x=1;x1,2,3
。顺便说一句,的很少使用。注意,在Ruby中为
循环使用不是惯用的方法。for
循环将其中间变量泄漏到全局变量空间,这有时很有用,但通常不是我们想要做的事情。相反,我们使用each
或times
或最多
或迭代器在数组或范围上循环。不,因为它是可选的……与更改y
无关。