porsamini

April 20, 2011

Inline methods in ruby behaves differently for ‘<<' and '=' methods

Filed under: Facts,Ruby — porsamini @ 12:00 pm
Tags: , , ,

:CODE

module ModuleTest
  class << self
    attr_accessor :foo
    def foo_bar() foo << "bar" end        #-- Comapare1   
end
self.foo = []
end

IRB =>

irb(main):010:0> ModuleTest.foo
=> []
irb(main):011:0> ModuleTest.foo_bar
=> ["bar"]
irb(main):012:0> ModuleTest.foo
=> ["bar"]                                   #-- Comapare2 
irb(main):013:0> ModuleTest.foo_bar
=> ["bar", "bar"]                                 #-- Comapare3 
irb(main):014:0> ModuleTest.foo
=> ["bar", "bar"]
irb(main):015:0> ModuleTest.foo_bar
=> ["bar", "bar", "bar"]
irb(main):016:0> ModuleTest.foo
=> ["bar", "bar", "bar"]
irb(main):017:0>

:CODE

module ModuleTest2
   class << self
     attr_accessor :foo
   def foo_bar() foo = "bar" end        #-- Compare1 
end
self.foo = "Foo Bar"
end

IRB =>

irb(main):010:0> ModuleTest2.foo
=> "Foo Bar"                                #-- Comapare2 
irb(main):011:0> ModuleTest2.foo_bar
=> "bar"                                         #-- Comapare3

Theme: Rubric. Blog at WordPress.com.

Follow

Get every new post delivered to your Inbox.