Somehow I thought the action of defining a class is an declaration and doesn't execute statements, but I was wrong.
class MyClass
  put "Hello world"
  def MyMethod
    puts "output from MyMethod"
  end
end
The Ruby code above actually spits "
Hello world".  I tried this with Python and Python did the same.
The reason I wondered this was Ruby's 
attr_accessor.
class MyClass
  attr_accessor :a
end
It looked to me like an declaration of 
@a to have accessors, but it isn't.  
attr_accessor is an method implemented in Module class and it is not a reserved word.
The truth is that 
attr_accessor is executed when the source code is interpreted and it defines accessor methods.  AH!
No comments:
Post a Comment