Ruby: initialize() vs class body?

后端 未结 3 1261
日久生厌
日久生厌 2021-02-01 14:12

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

相关标签:
3条回答
  • 2021-02-01 14:45

    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

    0 讨论(0)
  • 2021-02-01 14:56

    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).

    0 讨论(0)
  • 2021-02-01 15:06

    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.

    0 讨论(0)
提交回复
热议问题