返回空数组(Ruby)

时间:2014-08-11 01:01:26

标签: ruby

我正在尝试在Ruby中创建一个条件语句。如果我的各种数字的数组为空或为零,则应返回一个空数组,否则应对数字进行排序。这是我到目前为止所做的。

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

...其中num是我的数组。但是我收到以下错误:

syntax error, unexpected tIDENTIFIER, expecting ':'

如果num是数字数组或nil,则会出现此错误。我不确定为什么这不起作用。有什么想法吗?

3 个答案:

答案 0 :(得分:4)

要修复代码,请将您拥有的内容更改为以下内容之一:

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

num.nil? ? [] : num.sort

(num || []).sort

num.to_a.sort

如果numnum,后两者将nil转换为空数组,然后对结果进行排序。请参阅NilClass.to_a

答案 1 :(得分:2)

这是因为您将return num置于三元运算符构造中。优先规则不会根据需要解析它。移除return,它不会引发错误(虽然它不会按您的意愿运行; nil num时会返回nil。或者,如果您只想在条件满足时使用return,那么您应该(return num)

但为了您的目的,更好的代码是:

num.to_a.sort

答案 2 :(得分:0)

如果您想确保使用数组,请致电:

Array(num).sort

因为它的工作原理如下:

Array(nil)    #=> []
Array([])     #=> []
Array([1, 2]) #=> [1, 2]