Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Return empty array (Ruby)

Tags:

ruby

I am trying to create a condition statement in Ruby. If my array of various numbers is empty or nil, it should return an empty array otherwise it should sort the numbers. This is what I have so far.

num == nil || num.empty? ? return num : num.sort!

...where num is my array. However I'm getting the following error:

syntax error, unexpected tIDENTIFIER, expecting ':'

I get this error if num is an array of numbers or nil. I'm not sure why this isn't working. Any thoughts?

like image 905
codedude Avatar asked Oct 24 '25 19:10

codedude


2 Answers

To fix your code, change what you have to one of the following:

num.nil? || num.empty? ? [] : num.sort

num.nil? ? [] : num.sort

(num || []).sort

num.to_a.sort

The latter two convert num to an empty array if num is nil, then sort the result. See NilClass.to_a.

like image 123
Cary Swoveland Avatar answered Oct 26 '25 11:10

Cary Swoveland


It is because you put return num within a ternary operator construction. Precedence rule does not parse it as you wanted. Remove return, and it will not raise an error (although it will not work as you want to; nil will be returned when num is nil). Or, if you want to use return only when the condition is satisfied, then you should do (return num).

But for your purpose, a better code is:

num.to_a.sort
like image 42
sawa Avatar answered Oct 26 '25 09:10

sawa



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!