Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Ruby中将Fixnum视为数组_Ruby_Arrays_Fixnum - Fatal编程技术网

在Ruby中将Fixnum视为数组

在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合并(左、右

我是Ruby新手,我正在尝试维基百科上给出的方法

在合并方法中比较左数组和右数组的第一个元素时,我得到了“Fixnum与数组的比较失败(ArgumentError)”失败错误。原因可能是什么?如何解决此问题?谢谢:)

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]]