2016-08-25 86 views
0

爲什麼@test超出範圍Aclass?當調用a.print_test時,我得到一個未定義的@test爲什麼這個實例變量超出範圍?

class Aclass 
    def print_test 
    puts "@test from Aclass: " + @test 
    end 
end 

a = Aclass.new 
#a.print_test 

#but still in scope here 
puts "After print_test call: " + @test 

在旁註中,任何一個人都知道如何獲得運行代碼按鈕?我沒有在工具欄中看到它。

回答

2

@var可以簡短地訪問當前類的實例或self上的實例變量。

@test = 'what' 
puts self 
puts self.instance_variable_get :@test 

class Aclass 
    def print_test 
    puts self 
    puts self.instance_variable_get :@test 
    end 
end 

a = Aclass.new 
a.print_test 

所以範圍在主程序和類的實例之間已經改變了。

+0

第一個'放自己'是'main'。第二個是「班級」。什麼是「主」? – 4thSpace

+2

這是個好問題!現在,如果只有某個網站可以[請教關於編程的問題](http://stackoverflow.com/q/917811/2988)? –