||= for arrays

Dear messageboard users
I am just wandering if there is any operator similar to the ||= for
arrays?

#DOES NOT WORK
test_array = []
test_array ||= [‘nothing…’]

#DOES NOT WORK EITHER
test_array = []
test_array ||<< [‘nothing…’]

You could write something like this:
test_array << [‘nothing…’] if test_array.size == 0

But that just doesn’t look half as good as any of the two above in my
opinion.

Best regards
Sebastian Probst E.

On 10/1/06, Sebastian Probst E. [email protected]
wrote:

test_array = []
test_array ||<< [‘nothing…’]

You could write something like this:
test_array << [‘nothing…’] if test_array.size == 0

But that just doesn’t look half as good as any of the two above in my
opinion.

The ||= operator checks that the variable in question evaluates to nil
(or false, I think).

So, its behaving exactly as expected, since an empty array is not nil or
false.

-ryan

On Sunday 01 October 2006 19:17, Sebastian Probst E. wrote:

Dear messageboard users
I am just wandering if there is any operator similar to the ||= for
arrays?

#DOES NOT WORK
test_array = []
test_array ||= [‘nothing…’]

test_array |= [‘nothing…’]

Array#| is the union operator.

Michael


Michael S.
mailto:[email protected]
http://www.schuerig.de/michael/

Hi –

On Sun, 1 Oct 2006, Michael S. wrote:

test_array |= [‘nothing…’]

Array#| is the union operator.

The problem with that (at least potentially, depending on what else is
happening) is that it creates a new array object, rather than
modifying test_array in place.

David


David A. Black | [email protected]
Author of “Ruby for Rails” [1] | Ruby/Rails training & consultancy [3]
DABlog (DAB’s Weblog) [2] | Co-director, Ruby Central, Inc. [4]
[1] Ruby for Rails | [3] http://www.rubypowerandlight.com
[2] http://dablog.rubypal.com | [4] http://www.rubycentral.org

2006/10/1, Sebastian Probst E. [email protected]:

You could write something like this:
test_array << [‘nothing…’] if test_array.size == 0

You could do:

array = []
=> []
array << ‘nothing’ if array.empty?
=> [“nothing”]
array << ‘something’ if array.empty?
=> nil
array
=> [“nothing”]

Thanks for all the answers!

Best regards
Sebastian