2010-12-20 29 views
22
def method 
    a = 3 
    b = 4 

    some_method_that_gives # [a, b] 
end 

Odpowiedz

39

local_variables

to generuje szereg symboli, przedstawiające zmienne. W twoim przypadku: [:a, :b]

+0

nie mogę uwierzyć, że nie znaleźliśmy go wcześniej. Dzięki! – Cheng

+1

Niektóre wersje Rubiego wypisują tablicę łańcuchów zamiast tablicy symboli. Ruby 2.0 i 1.9 używają symboli, ale Ruby 1.8.7 użytych ciągów. – inquiryqueue

4

local_variables zawiera listę zmiennych lokalnych, ale wymienia je przed zdefiniowaniem. Zobacz to:

p local_variables 
a = 1 
p local_variables 

ten wyprowadza

[:a] 
[:a] 

który nie może być to, czego oczekują. Kontrastować z defined?

p defined? a 
a = 1 
p defined? a 

który wyprowadza bardziej oczekiwany

nil 
"local-variable"