在Ruby中将Fixnum视为数组
我是Ruby新手,我正在尝试维基百科上给出的方法 在合并方法中比较左数组和右数组的第一个元素时,我得到了“Fixnum与数组的比较失败(ArgumentError)”失败错误。原因可能是什么?如何解决此问题?谢谢:)在Ruby中将Fixnum视为数组,ruby,arrays,fixnum,Ruby,Arrays,Fixnum,我是Ruby新手,我正在尝试维基百科上给出的方法 在合并方法中比较左数组和右数组的第一个元素时,我得到了“Fixnum与数组的比较失败(ArgumentError)”失败错误。原因可能是什么?如何解决此问题?谢谢:) def合并排序(数组) 如果array.length==1 返回数组 结束 中间=array.length/2-1 左=数组[0..middle] 右=数组[中间+1..array.length-1] 左=合并排序(左) 右=合并排序(右) 合并(左、右) 结束 def合并(左、右
def合并排序(数组)
如果array.length==1
返回数组
结束
中间=array.length/2-1
左=数组[0..middle]
右=数组[中间+1..array.length-1]
左=合并排序(左)
右=合并排序(右)
合并(左、右)
结束
def合并(左、右)
结果=[]
而left.length>0 | | right.length>0
如果left.length>0&&right.length>0
一=左[0]
二=右[0]
puts(“一的类是#{1.class}二的类是#{2.class}二的类是#{2}”)
如果一个错误出现在以下几行:
elsif left.length > 0
result.push(left)
left = []
else
result.push(right)
right = []
end
一个简单的例子应该说明原因:
irb(main):067:0> a=[1,2]
=> [1, 2]
irb(main):068:0> b=[3,4]
=> [3, 4]
irb(main):069:0> a.push(b)
=> [1, 2, [3, 4]]
不要使用push()
,而是尝试concat()
如果有@muistooshort yes。。这就是我得到errorNice的地方,这最终会触发one@mui中的错误:就是这样+10到pramod发布一个完整的、可测试的程序——没有什么比在REPL循环中看到错误消息更合适的了。:)@萨诺尔德:谢谢:)从现在起,我会更仔细地阅读这些文件on@pguardiario没错,那也行。如果普拉莫德发现这一点更清楚,那么他应该接受。但我会发现在六个月内阅读concat()
比阅读+=
更容易——我想知道+=
是否将正确的参数添加为单个元素(push()
的别名)或串联列表(concat()
的别名)。每次我都想弄清楚。如果你对+=
更清楚,那么就去做吧。:)
irb(main):067:0> a=[1,2]
=> [1, 2]
irb(main):068:0> b=[3,4]
=> [3, 4]
irb(main):069:0> a.push(b)
=> [1, 2, [3, 4]]