【发布时间】:2022-01-21 04:43:35
【问题描述】:
所以,我一直在尝试反转 Ruby 中的列表。
代码如下:
def reverse(arr)
retval = []
arr.each do |e|
retval = [e] << retval[0..retval.length]
end
return retval
end
arr = [1, 2, 3, 4, 5]
res = reverse(arr)
puts "[" + res * ", " + "]"
预期的输出是:
[5, 4, 3, 2, 1]
结果:
[5, 4, 3, 2, 1, ]
我相信[e] << retval[0..retval.length] 在这里没有正确附加。例如,我认为不是[1] << [] = [1],而是[1] << [] = [1, []]。
知道如何解决这个问题吗?
注意:请不要建议任何其他方式来反转列表。谢谢你:)
【问题讨论】:
-
尝试
p res打印结果。 -
什么是压力? @Stefan
-
问题是我的结果数组是这样的:[5, [4, [3, [2, [1, [] ] ] ] ] ]。我打算得到 [5, 4, 3, 2, 1],如果逆向逻辑是正确的,我就会得到那个答案。
-
为什么不直接使用内置方法
Array#reverse?要输出结果,您可以使用Kernel#p。这意味着p arr.reverse是您的代码的 Ruby 等价物。 -
@Sakhund "What is pres?" - 它打印
res,但(与puts相反)将使用对象的inspect方法,通常会显示对象的结构。