--000325554a66870fa1047284b6f3
Content-Type: text/plain; charset=windows-1252
Content-Transfer-Encoding: quoted-printable

On Tue, Sep 1, 2009 at 7:52 AM, Robert Klemme <shortcutter / googlemail.com>wrote:

> Hi,
>
> it just occurred to me that one sometimes might want to use a proxy
> for an instance variable which restricts access in some way.
>
> class Proc
>  def proxy(meth)
>    class<<self;self;end.send(:alias_method, meth, :call)
>    self
>  end
> end
>
> class X
>  def initialize
>    @e = []
>  end
>
>  def entries
>    en = lambda {|x| @e << x if x >= 0; en}.proxy(:<<)
>  end
> end
>
> x = X.new
> x.entries << 10 << -12 << 23
> p x
>
> You can even use it for things like this:
>
> NULL = lambda {|y| y == 0}.proxy :===
> POS = lambda {|y| y > 0}.proxy :===
> NEG = lambda {|y| y < 0}.proxy :===
>
> (-2..2).each do |i|
>  case i
>  when NEG
>    puts "#{i} NEG"
>  when NULL
>    puts "#{i} NULL"
>  when POS
>    puts "#{i} POS"
>  else
>    puts "#{i} what?"
>  end
> end
>
> Anybody think this should go into the core?  (I'm not religious about the
> name.)
>
> Kind regards
>
> robert
>
> --
> remember.guy do |as, often| as.you_can - without end
> http://blog.rubybestpractices.com/
>
>
Very slick and in my opinion highly useful.  So, I guess I'm saying yes.

-- 
"Hey brother Christian with your high and mighty errand, Your actions speak
so loud, I canÃÕ hear a word youÃÓe saying."

-Greg Graffin (Bad Religion)

--000325554a66870fa1047284b6f3--