有人可以解释一下我做错了什么。
fb = 2
fa = 100
def fc
fa = fa - fb
end
puts "#{fa}"
fc
puts "#{fa}"
答案 0 :(得分:1)
在fc
方法中,代码不知道fb
是什么。在这种情况下,fa
和fb
都毫无意义。 (fa
不会抛出同样的错误,因为你也在做任务,但除此之外还有。)
要在fa
方法中使用fb
和fc
,您需要传递它们。试试这个:
fb = 2
fa = 100
def fc(fa, fb)
fa - fb
end
puts "#{fa}"
fa = fc(fa, fb)
puts "#{fa}"
答案 1 :(得分:1)
fa
和fb
变量未在fc
方法的上下文中定义,因此,fc
方法对它们一无所知。你不能在这样的方法中使用外部范围的变量。您需要将所需的参数传递给fc
方法:
fb = 2
fa = 100
def fc(fa, fb) # fc method takes two arguments: fa and fb
fa = fa - fb # Now, fc method knows about fa and fb variables/arguments
end
p fc(fa, fb) # pass fa and fb as arguments to the fc method
# => 98
答案 2 :(得分:0)
函数fc不能使用变量fa或fb,因为它们被排除在其范围之外(我们说函数没有"关闭"超过这些变量)。 proc或lambda确实有一个闭包:
fb = 2
fa = 100
fc = proc {
fa = fa - fb
}
puts "#{fa}"
fc.call
puts "#{fa}"