In Ruby, what is the difference between putting code in an initialize()
method rather than directly in the class body? Both appear to be executed when calling
if you write a code in class body it will be executed when ruby load that class, the loading can be happen only once. And initialize will be executed only when you make an instance of class, and it will be executed every time when you call new to class.
now when you do MyClass.new ruby loads class MyClass it will look for class in memory if it is not then load that class, then call its new method to create instanc
Well, initialize
gets called by new
, whereas the class body gets evaluated on class definition/loading.
Additionally, try setting an instance variable in the class body or in initialize
. You'll notice the latter will belong to the created object, whereas the first will belong to the class instance (hence the name class instance variable).
Try to create two instances of MyClass
a = MyClass.new
b = MyClass.new
to see the difference:
Hello
World
World
Code in the class body execute only once - when ruby loads the file. initialize() executes every time you create a new instance of your class.