返回空数组(Ruby)
我正在尝试用Ruby创建一个条件语句。如果我的各种数字数组为空或为零,它应该返回一个空数组,否则它应该对数字进行排序。这就是我目前所拥有的返回空数组(Ruby),ruby,Ruby,我正在尝试用Ruby创建一个条件语句。如果我的各种数字数组为空或为零,它应该返回一个空数组,否则它应该对数字进行排序。这就是我目前所拥有的 num == nil || num.empty? ? return num : num.sort! …其中num是我的数组。但是,我得到了以下错误: syntax error, unexpected tIDENTIFIER, expecting ':' 如果num是一个数字数组或nil,则会出现此错误。我不知道这为什么不起作用。有什么想法吗 这是因为您将
num == nil || num.empty? ? return num : num.sort!
…其中num是我的数组。但是,我得到了以下错误:
syntax error, unexpected tIDENTIFIER, expecting ':'
如果num是一个数字数组或nil,则会出现此错误。我不知道这为什么不起作用。有什么想法吗 这是因为您将
return num
放在三元运算符构造中。优先级规则不会按您的需要对其进行解析。删除return
,它将不会引发错误(尽管它不会按您希望的方式工作;nil
将在num
为nil
时返回nil)。或者,如果只想在满足条件时使用return
,则应执行(return num)
但出于您的目的,更好的代码是:
num.to_a.sort
如果要确保使用阵列,只需调用:
Array(num).sort
因为它是这样工作的:
Array(nil) #=> []
Array([]) #=> []
Array([1, 2]) #=> [1, 2]
要修复代码,请将所需更改为以下内容之一:
num.nil? || num.empty? ? [] : num.sort
num.nil? ? [] : num.sort
(num || []).sort
num.to_a.sort
如果num
为nil
,则后两种方法将num
转换为空数组,然后对结果进行排序。请参阅。那么Ruby中的返回值是否只是假设的呢?Ruby总是返回最后执行的语句的值。但是,如果您想从上一条语句以外的其他地方返回,则可以使用return
。或者,只需使用if
/,然后使用/else
,其优先级几乎总是您所期望的:if num==nil | num.empty?然后返回num else num.sort!结束
由于最后一个代码段而被接受。干得好,先生;)