On 11/6/07, Todd Benson <caduceass / gmail.com> wrote:
> On 11/6/07, yermej <yermej / gmail.com> wrote:
> > On Nov 6, 6:41 pm, Joshua Muheim <fo... / josh.ch> wrote:
> > > Hi all
> > >
> > > irb(main):001:0> "" || "asdf"
> > > => ""
> > > irb(main):002:0> nil || "asdf"
> > > => "asdf"
> > > irb(main):003:0>
> > >
> > > I'd like the first one to also return "asdf". So is there an operator
> > > that fits my needs? :-)
> >
> > "" isn't false so || and or won't work. You'll have to code it
> > differently. E.g.:
> >
> > a = "a string"
> > a || (a.empty? ? "asdf" : a)
>
> This doesn't work for me.  The previous one doesn't either.  This one
> does (I'm sure someone could easily clean this up, I feel lazy
> though)...
>
> [nil, "", "something"].each do |i|
>   puts( (item ||= "").empty? ? "asdf" : item )

There should be an additional closing ) on the previous line of code

> end

Todd