[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Re: ruby-dev summary 28206-28273

Berger, Daniel

2/2/2006 3:39:00 PM

> -----Original Message-----
> From: Martin DeMello [mailto:martindemello@yahoo.com]
> Sent: Thursday, February 02, 2006 7:43 AM
> To: ruby-talk ML
> Subject: Re: ruby-dev summary 28206-28273
>
>
> Minero Aoki <aamine@loveruby.net> wrote:
> >
> > [ruby-dev:28217] ANDCALL operator
> >
> > Nobuyoshi Nakada suggested a new operator `&?' (this
> notation is temporary)
> > which evaluates left-hand-side expression, and if it is
> true then call
> > right-hand-side method. For example:
> >
> > if a[1] and a[1].strip.empty?
> > ||
> > if a[1] &? strip.empty?
> >
> > h["key"] and h["key"].dispatch
> > ||
> > h["key"] &? dispatch
> >
> > The motivation of this operator is to avoid duplication of
> > expression.
> >
> > Takaaki Tateishi proposed another idea, Object#nil? with block
> > (again, this name is temporary).
> >
> > a[1].nil? {|str| str.strip.empty? }
> > h["key"].nil? {|h| h.dispatch }
> >
> > This issue is still open.

Yuck. Looks like a hack from Perl6. Not Ruby-ish.

> Syntactically, a method might look better than an operator:
>
> a[1].if?.strip.empty?
> a[1].maybe.strip.empty?
> a[1].and.strip.empty?
>
> martin

Looks better syntactically, but still has problems as Austin pointed
out.

I'd sooner accept "iff" (if and only if):

iff h["key"].dispatch -> same as: h["key"].dispatch if h["key"]

But, the idea of adding new keywords doesn't thrill me and I worry that
it's too terse.

Regards,

Dan


2 Answers

Martin DeMello

2/2/2006 7:47:00 PM

0

Berger, Daniel <Daniel.Berger@qwest.com> wrote:

> > a[1].if?.strip.empty?
> > a[1].maybe.strip.empty?
> > a[1].and.strip.empty?
> >
> > martin
>
> Looks better syntactically, but still has problems as Austin pointed
> out.

Didn't see that post :( Hopefully it'll show up on the ng side sometime
soon. The only problem I can see with it is that you get the method call
overhead even if it does nothing.

> I'd sooner accept "iff" (if and only if):
>
> iff h["key"].dispatch -> same as: h["key"].dispatch if h["key"]
>
> But, the idea of adding new keywords doesn't thrill me and I worry that
> it's too terse.

My strong objection to this is that it breaks the ". binds more tightly
than anything else" rule.

martin

Eric Hodel

2/2/2006 10:12:00 PM

0

On Feb 2, 2006, at 7:39 AM, Berger, Daniel wrote:

>> Minero Aoki <aamine@loveruby.net> wrote:
>>>
>>> Takaaki Tateishi proposed another idea, Object#nil? with block
>>> (again, this name is temporary).
>>>
>>> a[1].nil? {|str| str.strip.empty? }
>>> h["key"].nil? {|h| h.dispatch }
>>>
>>> This issue is still open.
>
> Yuck. Looks like a hack from Perl6. Not Ruby-ish.

Looks more like Smalltalk, but should be not_nil?.

--
Eric Hodel - drbrain@segment7.net - http://se...
This implementation is HODEL-HASH-9600 compliant

http://trackmap.rob...