What does this entry in the FAQ mean? Hal > 4.8 I can't get def pos=(val) to work. > > I have the following code, but I cannot use the method pos = 1. > > def pos=(val) > print @pos, "\n" > @pos = val > d > > Methods with = appended must be called with a receiver (without the receiver, you're just assigning to a local variable). > Invoke it as self.pos = 1. ----- Original Message ----- From: Yasushi Shoji <yashi / yashi.com> To: ruby-talk ML <ruby-talk / netlab.co.jp> Sent: Tuesday, October 10, 2000 8:07 PM Subject: [ruby-talk:5406] Re: Object.foo, setters and so on > At Wed, 11 Oct 2000 11:37:25 +0900, > Hal E. Fulton <hal9000 / hypermetrics.com> wrote: > > > > OK, here is what I think I know. > > > > These three fragements differ only in that the last one defines a > > private method, no? > > nop > > > class Object > > def foo > > ... > > end > > end > > you defined public method 'foo' in class Object > > you call it: > Object.new.foo > > > def foo > > ... > > end > > you defined private method 'foo' in class Object > > you call it > foo # no receiver. > > > def Object.foo > > ... > > end > > you defined singleton method for class Object > > you call it > Object.foo > > > And isn't it true that a method like bar= must be called with a receiver? > > nop. > > > Then why won't this work? > > so that's just the way it is. > > > def bar= > > ... > > end > > > > self.bar = 5 > > however, i don't know why the following doesn't work :( > > def bar=(value) > p value > end > > bar = 5 > > > It tells me that bar is private. Why? > > because you defined private method :) this thing came up on -talk a > few days ago, no? > > > [2 <text/html; iso-8859-1 (quoted-printable)>] > > and you can keep your the html file. > > hope it helps > -- > yashi > >