2016-08-12 34 views
1

當我寫下面的程序,當我運行ruby腳本時,爲什麼會自動執行類中的代碼?

class Classname 
    puts "hi" 
end 

保存它作爲一個文件名爲.rb,並執行在終端中的文件時,輸出「喜」被返回。我不明白爲什麼。我不必將put語句分配給方法,創建Classname類的對象,然後調用該對象的方法來獲取該輸出?或者至少把puts語句放在類的初始化方法中,然後創建一個對象?爲什麼這樣工作?

+3

當您使用'class'關鍵字定義一個類時,它實際上會構造一個新的'Class'對象並在其上下文中執行內部代碼。請參閱http://stackoverflow.com/a/9202363/591495 – oldrinb

+0

如果類中的代碼沒有得到執行,您將如何定義方法?如果類內部的代碼沒有被執行,你會如何調用'attr_accessor'方法?如果在初始化對象初始化之前'initialize'的定義沒有被執行,你將如何創建一個實例?爲什麼'initialize'方法的定義必須一遍又一遍地爲你創建的每個實例執行? –

回答

4

Ruby是一種腳本語言,它意味着你可以只寫

puts 'hi' 
在文件

沒有定義任何類或方法。同樣,當你定義一個類時,你實際上正在執行代碼來定義這個類,並且你可以執行像puts 'hi'那樣的副作用的代碼。這很有用,因爲Ruby中經常使用元編程來幫助定義類。

相關問題