在紅寶石,一切是可執行代碼。或者換句話說:一切是一個腳本。沒有「類別聲明」之類的東西。
,它位於在一個文件中,而不被內別的的方法等體,類體,模塊體或塊體的任何代碼,當該文件是load
ED(或require
d或require_relative
d)被執行。這被稱爲腳本主體。
創建該類或模塊時,將執行位於類或模塊主體內部的任何代碼。 (這是你所指的情況。)
枯燥的部分:調用方法體內的任何代碼時,或者更確切地說,當該方法被調用以響應接收消息時與方法名稱相同。 (Duh。)
當該塊爲yield
編輯時,位於塊體內的任何代碼都會執行。
因爲一個類定義只是一個腳本,這意味着它可以包含任何類型的代碼,你想要的,包括方法調用:
class Foo
attr_accessor :bar # Yes, attr_accessor is just a method like any other
private # I *bet* you didn't know *that* was a method, too, did you?
end
或條件語句:
class Bar
if blah # e.g. check if the OS is Windows
def foo
# one way
end
else
def foo
# a different way
end
end
end