返回空数组(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
如果num
为nil
,后两个将num
转换为空数组,然后对结果进行排序。 见NilClass.to_a 。
这是因为你将return num
放在三元运算符构造中。 优先规则不会根据需要解析它。 删除return
,它不会引发错误(虽然它不会按你的意愿工作;当num
为nil
时将返回nil
)。 或者,如果您只想在条件满足时使用return
,那么您应该(return num)
。
但为了您的目的,更好的代码是:
num.to_a.sort
如果您想确保使用数组,只需调用:
Array(num).sort
因为它的工作原理如下:
Array(nil) #=> [] Array([]) #=> [] Array([1, 2]) #=> [1, 2]