这是如何运作的?
in irb:
>> class A
>> b = [1, 2,3]
>> end
=> [1, 2, 3]
Run Code Online (Sandbox Code Playgroud)
b是实例变量吗?类变量?我如何从课外访问b?它用于元编程吗?
b是实例变量吗?类变量?
不,它是class ... end范围内的局部变量.
我如何从课外访问b?
你不会.一旦到达,它就会超出范围(因而无法访问)end.
它用于元编程吗?
有可能.例:
class A
b = [1,2,3]
b.each do |i|
define_method("foo#{i}") do end
end
end
Run Code Online (Sandbox Code Playgroud)
我现在已经定义了方法foo1,foo2和foo3.
当然,如果我没有创建变量b并且只是[1,2,3].each直接执行,这将不会有任何不同.因此,创建局部变量本身不会做任何事情,它允许您编写更清晰的代码(与在方法中使用局部变量相同).