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?
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.
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With