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.

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