我想知道是否有办法使用Proc.new
,lambda
或其他方法将多个方法合并为一个方法。
下面我的代码也有问题。
def multiples(n,p)
(n..p).each do |e|
puts e if e%2 == 0 or e%3 == 0
end
end
def summing(n)
sum = 0
n.each { |x| puts sum+=x }
end
当我单独测试multiples(2,43)
或summing([2,6,5,4])
时,它会提供正确答案,但当我将这两者合并为summing(multiples(0,10))
时,我会得到错误答案。
如果有人可以帮助我,那就太好了。
答案 0 :(得分:0)
以下应该有效..
def multiples(n,p)
(n..p).map do |e|
e if e%2 == 0 or e%3 == 0
end.compact
end
def summing(n)
sum = 0
n.each { |x| p sum+=x }
end
summing(multiples(0,10))
# >> 0
# >> 2
# >> 5
# >> 9
# >> 15
# >> 23
# >> 32
# >> 42
Array#each
对你的任务没有帮助,因为它在完成后返回接收器。
答案 1 :(得分:0)
马格,
您希望summing
返回sum
(而不是n
),因此最后需要sum
:
def summing(n)
sum = 0
n.each { |x| puts sum += x}
sum
end