Ruby 对于循环,而i>;10英寸红宝石

Ruby 对于循环,而i>;10英寸红宝石,ruby,for-loop,iterator,Ruby,For Loop,Iterator,要设置i及其最大值,并在Java中使用双迭代器,我将对循环使用,如下所示: for (i=1; i<10, i+=){ for (j=1; j<10; j++){ puts i (or whatever function) } } 或而循环 i = 1 while i < 10 puts i i += 1 end i=1 当我

要设置
i
及其最大值,并在Java中使用双迭代器,我将对
循环使用
,如下所示:

for (i=1; i<10, i+=){
   for (j=1; j<10; j++){
      puts i (or whatever function)
   }
}
循环

i = 1
while i < 10
  puts i
  i += 1
end
i=1
当我<10
把我
i+=1
结束
这些
while
循环是我提到的Java的(单迭代器)Ruby等价物,还是有其他方法可以为
循环执行这些

Ruby-ish方法应该是
每个

(1...10).each do |i|
  puts i
end
或者进行双重迭代

(1...10).each do 
  (1...10).each do |j|
    puts j
  end
end

正如@maxwilliams和@sawa指出的,
(1…10)
包含1到9,
(1…10)
包含1到10。

为什么不进行嵌套循环

for i in 1...10
  for j in 1...10
    puts i
  end
end

顺便说一下,Ruby的等价物是1…10中的i的
,而不是1…10中的i的
,,在Ruby中我们不使用括号。他们不酷

这是Ruby中
while
语句的一个示例

while $i < $num  do
   puts "Value for i is #{i}"
   $i +=1
end
但是还有更多的循环!查看此以了解更多信息


但是如果您是Java程序员,您可以在Ruby中检查此链接,因为您很少使用
for
循环。事实上,你从来不使用它。在Ruby中使用枚举数和块

for (i=1; i<10, i+=){
   for (j=1; j<10; j++){
      puts i (or whatever function)
   }
}
还请注意,两者之间存在差异

(1..10).each do |i|
end

后者相当于

(1...10).each do |i|
  (1...10).each do |j|
    puts j
  end
end
(1..9).each do |i|
end
事实上,
将创建一个包含范围,而
将创建一个独占范围

还值得一提的是,在Ruby中,很少使用索引来循环项目。因此,如果您的目标是打印出数组中的某些元素,那么您的代码不应该是

(1..10).each do |i|
  p @items[i]
end
相反,你在集合中给每个人打电话

@items.each do |item|
  p item
end
在某些情况下,比如在你的问题中,你甚至不需要一个范围(当你的循环从1开始时)。你可以使用
时间

9.times do |i|
  9.times do |j|
    puts j
  end
end

第一个结果是“在ruby中循环”。请注意,搜索基本信息总是比发布问题并等待答案快。您的代码建议您想做
i<10
,但您的标题建议您想做
i>10
。不要放一个误导性的/不相关的标题。@KevinDTimm我已经看过了,但我选择了使用StackOverflow的目标是询问熟练的程序员“有更好的方法吗”希望能看到有助于我理解的例子。这个问题完成了,如果您不方便的话,很抱歉。
1…10
的源代码,而不是
1…10
?我所看到的结果不支持这一点。我认为这是最干净的。不过,在他的原始问题中,他的循环仅从1到9。顺便说一句,您错过了`| i | `在你的第二个例子中。@MaxWilliams发现得很好,我想我应该做(1…10),我会编辑它。我故意省略了
i
,因为我只是输出
j
(1..10).each do |i|
  p @items[i]
end
@items.each do |item|
  p item
end
9.times do |i|
  9.times do |j|
    puts j
  end
end