【问题标题】:looping loops in ruby (noob) [closed]ruby 中的循环循环(菜鸟)[关闭]
【发布时间】:2010-02-15 01:53:28
【问题描述】:
n = 0
m = 40
o = 0
while n < m 
n = n + 1
end
while n = m 
o = o + 1 
n = 0 
end

使用该代码,制作它的最佳方法是什么,所以一旦它通过第二个循环,它就会回到第一个循环???

欢迎为这位初学者提供任何帮助。 :)

【问题讨论】:

  • 你的意思是把第一个循环的代码放在第二个循环之后?
  • 是的——减去复制和粘贴。
  • 您能解释一下您要做什么吗? (代码看起来很奇怪,有一个依赖于 m 的 while 循环,但将 n 设置为 0。
  • 您似乎想将其分解为一个函数,并从两个地方调用它。
  • 你能说出你为什么要这样做,而不是你想怎么做吗?可能有一种 Ruby 方法可以消除混乱,让语言完成大部分工作,前提是我们知道目标。

标签: ruby loops while-loop


【解决方案1】:

你在寻找这样的东西吗?

n = 0
m = 40
o = 0
while n < m 
  n = n + 1
  if (n == m) {
    o = o + 1
    n = 0
  }
  // as pointed out by Samir, you might want to put
  // termination condition here, else it will loop infinitely
end

【讨论】:

  • 该代码将无限循环。你确定这就是你想要的吗?
【解决方案2】:

不完全确定您是否为我们提供了足够的信息来解决这个问题。我不确定您要做什么。

在 Ruby 中这样使用是不寻常的。有很多更好的迭代方法。例如,如果你正在遍历一个数组,你可以这样做:

my_array.each do |e|
   # e is the next element of my_array
end

如果你正在遍历一个字符串,你可以这样做:

my_string.each_char do |c|
   # c is the next character in my_string
end

如果你真的想要一个计数器,你可以将 each_with_index 用于数组或字符串:

(1..my_string.size).each do |i|
   c = my_string[i - 1]
   # now c = next character, i = index
end

我承认,这不是您问题的直接答案,但 DJ 和 DigitalRoss 是正确的,您似乎正在努力实现嵌套循环。

【讨论】:

    【解决方案3】:

    可能是嵌套循环?

    您是否正在寻找这样的东西:

    (0..2).each do |o|
      (0..4).each do |n|
        p [o, n]
      end
    end
    

    根据需要调整循环边界...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-16
      • 1970-01-01
      • 2014-03-22
      • 2013-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-14
      相关资源
      最近更新 更多