J
Jeff Pritchard
I'm a relative newbie. I'm finally getting the hang of some of the
syntactic sugar provided, such as the whole thing about using the "or"
operator to provide a default value if something is nil:
foo = bar || "emptiness"
One thing I keep running into over and over and over and over that I
wish there was some syntactic sugar for is the whole business of calling
a method on an object, and doing something intelligent if the object is
nil.
If I have a string of stuff like:
blah = foo.bar.split
what if bar is nil? There are obvious long hand ways to deal with this,
but then you loose the smoothness of lining up things like this in Ruby.
I guess what I want is some syntactic sugar that means "this object, or
an empty one of these if this is nil", so that I would get an empty
result instead of a nil object missing method error.
I would like to be able to write:
blah = foo.bar||empty(bar).split
This could be written:
blah = foo.bar||"".split
But that requires a well known object type for bar. What if it is:
blah = foo.bar.whatchamacallit()
where bar is some oddball object of your own imagining.
Have you veteran Rubyists come up with a nice way to write stuff like
this that keeps the nice clean flow of Ruby's chaining in place, but
solves the problems with potentially nil intermediate results?
thanks,
jp
syntactic sugar provided, such as the whole thing about using the "or"
operator to provide a default value if something is nil:
foo = bar || "emptiness"
One thing I keep running into over and over and over and over that I
wish there was some syntactic sugar for is the whole business of calling
a method on an object, and doing something intelligent if the object is
nil.
If I have a string of stuff like:
blah = foo.bar.split
what if bar is nil? There are obvious long hand ways to deal with this,
but then you loose the smoothness of lining up things like this in Ruby.
I guess what I want is some syntactic sugar that means "this object, or
an empty one of these if this is nil", so that I would get an empty
result instead of a nil object missing method error.
I would like to be able to write:
blah = foo.bar||empty(bar).split
This could be written:
blah = foo.bar||"".split
But that requires a well known object type for bar. What if it is:
blah = foo.bar.whatchamacallit()
where bar is some oddball object of your own imagining.
Have you veteran Rubyists come up with a nice way to write stuff like
this that keeps the nice clean flow of Ruby's chaining in place, but
solves the problems with potentially nil intermediate results?
thanks,
jp