hemant
1/21/2007 7:09:00 PM
On Mon, 2007-01-22 at 03:05 +0900, Gregory Brown wrote:
> On 1/21/07, Gregory Brown <gregory.t.brown@gmail.com> wrote:
> > On 1/21/07, Stefano Zacchiroli <zack@bononia.it> wrote:
> > > On Mon, Jan 22, 2007 at 02:52:58AM +0900, Trans wrote:
> > > > > Am I using the wrong tool for my end?
> > > > Try a constant.
> > >
> > > Already tried. I can't stand the warning and I can't blame the compiler
> > > for outputting it: a constant would definitely be the wrong tool :)
> >
> > why do you need this in your module? Is it going to be mixed into
> > something or no?
>
> Something like this might work:
>
> >> module A
> >> def foo
> >> A.bar += 10
> >> end
> >> module_function
> >> def bar=(other)
> >> @bar = other
> >> end
> >> def bar
> >> @bar
> >> end
> >> end
> => nil
> >> A.bar = 20
> => 20
> >> class B
> >> include A
> >> def apple
> >> foo
> >> end
> >> end
> => nil
> >> c = B.new
> => #<B:0x31485c>
> >> c.apple
> => 30
> >> c.apple
> => 40
> >> c.apple
> => 50
> >> class C
> >> include A
> >> def banana
> >> foo + 10
> >> end
> >> end
> => nil
> >> d = C.new
> => #<C:0x1cc1b4>
> >> d.banana
> => 70
> >> d.banana
> => 80
> >> A.bar
> => 70
>
Well just a stolen idea from somewhere. But why not use module instance
variables:
module A
@foo = "Bar"
class << self; attr_accessor :foo; end
end
p A.foo
PS : Sometimes I really need to think hard to differentiate between a
class and a module.
--
gnufied