On 5/11/06, Krekna Mektek <krekna / gmail.com> wrote: > Hi! > > How does this actually work? > > from the Pick Axe book: > > irb> > 1> class Song > 2 > def duration=(new_duration) > 3> @duration = new_duration > 4> end > 5> end > 6> > 7> song = Song.new("Bicylops", "Fleck", 260) > 8> song.duration --> 260 > 9> song.duration = 257 > 10> song.duration --> 257 > > If a method name which is used to set the attribute is called > "duration=", how come that one can use song.duration = 257? > > I mean, does it just work lik this, because the Ruby engine recognizes > the 'set attribute' method just because of the = sign after the > "duration" on line number two? Yes! song.duration = 257 calls the duration= method in Song. It's as if you wrote song.duration=(257) You are not actually manipulating Song's @duration directly. > > Tnx, > Krekna > >