def add_one(number)
number + 1
end
puts add_one(5)
def add_two(number)
number = add_one(number)
add_one(number)
end
puts add_two(3)
您好。我完全理解第一种方法。但是,我现在正试图理解组合方法,我们可以从方法add_two中看到。我对第二种方法如何返回5无能为力?
据我所知,我们将方法称为add_two并传递数字' 3'进入论证。从那里我们得到一个带有对象3的局部变量号。从那里我不明白我们如何在我们还没有在下面定义它时包含add_one方法?有人可以引导我完成第二种方法吗?
让我通过打破下面的组件来帮助您理解我的逻辑:
first method:
add_one(5)
5 + 1 = 6
second method:
add_two(3)
3 = number + 1
number + 1
考虑到上面这样的第二种方法,我是对的吗?
答案 0 :(得分:0)
你对第二个功能的解释是不正确的。
second method:
add_two(number(3))
number = number(3) + 1 #=> 4
number(4) + 1 #=> 5
第二个函数中的第一行被处理为add_one(number) store result at number
,因此该行之后的数字现在为4而不是3
第二行被处理为add_one(number) and return result
,即5
答案 1 :(得分:0)
在add_two
方法中,行number = add_one(number)
会覆盖number
中的值,其结果为add_one(number)
:
例如,当您致电add_two(3)
时,会发生这种情况:
number = add_one(number)
number = add_one(3)
number = 4
在第二行,您再次致电add_one
,但使用修改后的number
,即它不再具有值3
,现在为4
,因为它在前一行被覆盖。
因此,第二行add_one(number)
变为add_one(4)
,因此结果为5
。