ruby类集合

pos*_*eid 0 ruby

这是如何运作的?

in irb:

>> class A
>>   b = [1, 2,3]
>> end
=> [1, 2, 3]
Run Code Online (Sandbox Code Playgroud)

b是实例变量吗?类变量?我如何从课外访问b?它用于元编程吗?

sep*_*p2k 6

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直接执行,这将不会有任何不同.因此,创建局部变量本身不会做任何事情,它允许您编写更清晰的代码(与在方法中使用局部变量相同).