如何用ruby-like为(i=index;i>;=0;i--)编写负循环

如何用ruby-like为(i=index;i>;=0;i--)编写负循环,ruby,loops,Ruby,Loops,我如何用Ruby编写一个倒计时的循环,类似于下面的C风格for循环 for (i = 25; i >= 0; i--) { print i; } 试试这个: 25.downto(0) { |i| puts i } 单向: 25.downto(0) do |i| puts i end 在Ruby中执行递减循环的方法有很多: 第一种方式: for i in (10).downto(0) puts i end (10).downto(0) do |i| puts i

我如何用Ruby编写一个倒计时的循环,类似于下面的C风格
for
循环

for (i = 25; i >= 0; i--) { 
    print i;
}
试试这个:

25.downto(0) { |i| puts i }
单向:

25.downto(0) do |i|
  puts i
end

在Ruby中执行递减循环的方法有很多:

第一种方式:

for i in (10).downto(0)
  puts i
end
(10).downto(0) do |i|
  puts i
end
i=10;
until i<0
  puts i
  i-=1
end
第二种方式:

for i in (10).downto(0)
  puts i
end
(10).downto(0) do |i|
  puts i
end
i=10;
until i<0
  puts i
  i-=1
end
第三种方式:

for i in (10).downto(0)
  puts i
end
(10).downto(0) do |i|
  puts i
end
i=10;
until i<0
  puts i
  i-=1
end
i=10;

直到i
下到
是可以的,但是还有更通用的
步骤

25.step(0, -1){|i| puts i}

以防您已经在使用某个范围:

rng = 0..6
rng.reverse_each { |i| p i }
编辑-更简洁地说:

puts(rng.to_a.reverse)
这里有一个更简单的例子:

(0..25).reverse_each { |i| print i }

打印反向数组元素:

nummarray = [3,4,7,3,6,8]

(numarray.length-1).downto(0){ |i| print numarray[i] }

请注意,您的问题应该读为(i=index;i>=0;i--)
如果您是ruby新手,为什么您的个人资料说您有5年的RoR经验?是的,mark:),我是一名php开发人员before@MarkThomas除非ror_master编辑了他的个人资料,这里面没有任何东西可以说明他5年的经验是如何在不同平台上崩溃的。虽然从技术上讲这是正确的,但它被列在了第一位,而且你不会认为“ror_master”几乎没有Ruby经验。这似乎有误导性。我想你已经明白了范围不能这样使用;-)这是别人的答案,因为被删除了。如果这正是
downto
的用途,我就不会想到要使用范围了。很抱歉。我被这个答案逗乐了,但记不起它的名字:-)当我第一次键入它时,我确实有一个“each”。几秒钟后,我意识到each是不必要的,并将其删除。事实上,在这种特殊情况下,使用枚举器是不必要的(但它是完全合法的)。第1种方法包含无关的paren,并且不是很习惯用法。第二种方式也包含无关的参数,有一个不必要的“each”,并有不必要的引号和变量插值。“第三条路”根本就坏了。@MarkThomas:我认为多余的括号是为了让像我这样的Ruby新用户觉得它不那么尴尬。在Javascript中,同样的事情也是可能的,但您需要使用两个点(基点和属性访问器):
65536..toExponential()
。这是一种允许属性访问的有点尴尬的方式,所以我认为在其他语言中,使用点直接访问数字的属性至少不是很常见,甚至不知道。