我有一个变量x
,它被设置为10.我想写一个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次,四次。如何让这段代码输出9,10,11,12?
答案 0 :(得分:1)
您的问题是您说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)
答案 1 :(得分:0)
如果您想要使用while
并且您的预期结果是Array
数字9到12。
只需在while
循环之前定义数组变量并按以下方式返回:
def loop(number)
x, a = 0, []
while x <= 3
a << number + x
x += 1
end
a
end
loop(9)
# => [9, 10, 11, 12]
更好的方式
但更好的方法是使用一些ruby函数,如times
和map
在这种情况下,我们使用times
和map
def loop(d)
4.times.map{|i| d + i}
end
p loop(9)
# => [9, 10, 11, 12]
也许这会有所帮助。