Ruby:1:Integer 的未定义方法"length"(NoMethodError)


def print_array(arr)
# YOUR WORK HERE
i = 0
if i > arr.length
else
p print_array(arr[i])
i += 1
end
end 

我得到以下错误::4:在1:整数的print_array': undefined method长度中(NoMethodError(每当我尝试运行代码时。不了解问题所在。

您实际上在调用print_array(1),这不是一个有效的调用。

您需要的是:

print_array([ arr[i] ])

或者,您可以使用阵列切片:

print_array(arr[i,1])

或者更改参数,使其默认为数组:

def print_array(*arr)
# ...
end

然后在不使用[ ... ]的情况下进行初始调用。

我建议代码的固定版本如下:

def print_array(arr, index = 0)
return if index > arr.length
p arr[index]
print_array(arr, index + 1)
end 

或者可能:

def print_array(arr)
return unless arr.any?
p arr[0]
print_array(arr.drop(1))
end 

最新更新