Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.ruby > #3005

Re: looking for an "inversion" pattern

From Robert Klemme <shortcutter@googlemail.com>
Newsgroups comp.lang.ruby
Subject Re: looking for an "inversion" pattern
Date 2011-04-16 15:29 +0200
Message-ID <90tjukFgaiU1@mid.individual.net> (permalink)
References <d0c168880ff1c65dd84fc6d70778ddb2@ruby-forum.com> <7c9986702d2a6acd3748e6cca228d8da@ruby-forum.com> <BANLkTikFjzEuhMevuXJ6ZGSHA6h=MNTnjA@mail.gmail.com> <9781d8dfa4b6039362d09f98e7b7036e@ruby-forum.com>

Show all headers | View raw


On 15.04.2011 17:40, Fearless Fool wrote:
> Thanks everybody!!

You're welcome!

>> I am sorry, I still do not understand your motivation to have a class
>> method which receives an instance as first argument.
>
> My motivation is that I was writing a lot of code like this:
>
> module HasXattr
>      def xattr_reference(key);  Xattr.xattr_reference(self, key); end
>      def xattr_store(key, value); Xattr.xattr_store(self, key, value);
> end
>      def xattr_has_key?(key); Xattr.xattr_has_key?(self, key); end
>      def xattr_delete(key); Xattr.xattr_delete(self, key); end
>      ...
> end
>
> .. and I thought to myself: this is Ruby.  There must be a better way.
> I guess I should have shown this concrete example earlier in the thread.

With my code you could do

module HasXattr
   def xattr # foo in your lingo
     proxy(Xattr)
   end
end

or directly use it in your class

module HasXattr
   def xattr # foo in your lingo
     proxy(Xattr)
   end
end

Then you can do

obj.xattr.has_key? "k"

or

obj.xattr.tap |x|
   x.store "k", "v" unless x.has_key?
end

Btw, what is Xattr?  Where does it come from and what does it do?  From 
the looks it seems to be some external storage for attributes associated 
with your instance which you do not want to store in the instance itself 
(for whatever reasons).  What do you need that for?

Kind regards

	robert

-- 
remember.guy do |as, often| as.you_can - without end
http://blog.rubybestpractices.com/

Back to comp.lang.ruby | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

looking for an "inversion" pattern Fearless Fool <r@alum.mit.edu> - 2011-04-15 00:16 -0500
  Re: looking for an "inversion" pattern Fearless Fool <r@alum.mit.edu> - 2011-04-15 01:27 -0500
    Re: looking for an "inversion" pattern Robert Klemme <shortcutter@googlemail.com> - 2011-04-15 04:24 -0500
      Re: looking for an "inversion" pattern Fearless Fool <r@alum.mit.edu> - 2011-04-15 10:40 -0500
        Re: looking for an "inversion" pattern Robert Klemme <shortcutter@googlemail.com> - 2011-04-16 15:29 +0200
  Re: looking for an "inversion" pattern Kevin Mahler <kevin.mahler@yahoo.com> - 2011-04-15 02:14 -0500
    Re: looking for an "inversion" pattern Fearless Fool <r@alum.mit.edu> - 2011-04-15 02:43 -0500
      Re: looking for an "inversion" pattern Kevin Mahler <kevin.mahler@yahoo.com> - 2011-04-15 08:44 -0500
    Re: looking for an "inversion" pattern 7stud -- <bbxx789_05ss@yahoo.com> - 2011-04-16 13:20 -0500
      Re: looking for an "inversion" pattern 7stud -- <bbxx789_05ss@yahoo.com> - 2011-04-16 13:43 -0500
  Re: looking for an "inversion" pattern Jesús Gabriel y Galán <jgabrielygalan@gmail.com> - 2011-04-15 02:45 -0500
  Re: looking for an "inversion" pattern Brian Candler <b.candler@pobox.com> - 2011-04-16 16:14 -0500
    Re: looking for an "inversion" pattern Robert Klemme <shortcutter@googlemail.com> - 2011-04-16 23:40 +0200

csiph-web