返回空数组(Ruby)

我试图在Ruby中创建一个条件语句。 如果我的各种数字的数组为空或nil,它应该返回一个空数组,否则它应该对数字进行排序。 这就是我到目前为止所拥有的。

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

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

 syntax error, unexpected tIDENTIFIER, expecting ':' 

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

要修复代码,请将所需内容更改为以下内容之一:

 num.nil? || num.empty? ? [] : num.sort num.nil? ? [] : num.sort (num || []).sort num.to_a.sort 

如果numnil ,后两个将num转换为空数组,然后对结果进行排序。 见NilClass.to_a 。

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

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

 num.to_a.sort 

如果您想确保使用数组,只需调用:

 Array(num).sort 

因为它的工作原理如下:

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