我有一个设置为10的变量x,我想写一个while循环来递增它。我知道你可以很容易地使用一个for-loop来完成这个任务,但是简单一点也不好玩。我的代码是:
def add(a)
g = a + 1
puts g
end
def loop(d)
x = 0
while x <= 4
x += 1
add(d)
end
end
loop(9)当我跑的时候,我得到了9,4次。如何使此代码的输出为9、10、11、12?
发布于 2016-06-23 16:55:39
您的问题是,您说add(d)和d是您的循环loop(d)的参数。Ruby盲目地做你告诉他的事情:loop(9),所以这里的d=9和保持等于9。你需要递增d的值。为此,add现在将返回递增的值,我们将返回值赋给d(在loop中)。
要解决您的问题,您需要执行以下操作:
def add(a)
g = a + 1
puts g
g
end
def loop(d)
x = 0
while x <= 4
x += 1
d = add(d)
end
end
loop(9)这是一个很大的问题,但是,你的代码根本不是的方式。
如果我要这样做,我会这样做:
def loop(start_number, repeat_number, increment)
repeat_number.times do
start_number += increment
p start_number
end
end
loop(9, 4, 1)发布于 2016-06-23 18:46:14
如果你真的想使用while,而你的预期目标是从9到12的Array。
只需在while循环之前定义数组变量,并像这样返回它:
def loop(number)
x, a = 0, []
while x <= 3
a << number + x
x += 1
end
a
end
loop(9)
# => [9, 10, 11, 12]BETTER WAY
但是更好的方法是使用像times和map这样的ruby函数
在本例中,我们使用times和map
def loop(d)
4.times.map{|i| d + i}
end
p loop(9)
# => [9, 10, 11, 12]也许这会有所帮助。
https://stackoverflow.com/questions/37986465
复制相似问题