Ruby 使用另一个数组的增量索引将两个数组相减到最大限制

Ruby 使用另一个数组的增量索引将两个数组相减到最大限制,ruby,Ruby,我有很多数学要做的大量数据,但它都基于一些基本模板。因此,当在两个数组之间进行数学运算时,我会这样做: results = [a[0]-b[1],a[1]-b[2],a[2]-b[3]] 我只想把基本模板:a[0]-b[1]放到结果数组中,让它自动填充50个位置。所以我不必总是手动输入 有什么方法可以做到这一点?一个好方法是创建一个自动执行此操作的方法。我只要告诉它数学,它就会填充一个数组 我不知道,我对编程真的很陌生。自定义 a = [2,3,4] b = [1,2,3,4] result

我有很多数学要做的大量数据,但它都基于一些基本模板。因此,当在两个数组之间进行数学运算时,我会这样做:

results = [a[0]-b[1],a[1]-b[2],a[2]-b[3]]
我只想把基本模板:a[0]-b[1]放到结果数组中,让它自动填充50个位置。所以我不必总是手动输入

有什么方法可以做到这一点?一个好方法是创建一个自动执行此操作的方法。我只要告诉它数学,它就会填充一个数组

我不知道,我对编程真的很陌生。

自定义

a = [2,3,4]
b = [1,2,3,4]

results = a.zip(b.drop(1)).take(50).map { |v,w| v - w }
  a = [2,3,4..............,1000]
  b = [1,2,3,4,.............900]

  class Array
   def self.calculate_difference(arr1,arr2,limit)
    begin
     result ||= Array.new
     limit.send(:times) {|index| result << arr1[index]-arr2[index+=1]} 
     result
   rescue
    raise "Index/Limit Error"
   end
  end
 end

谢谢你的回答。你能给我解释一下吗?我如何从中获得预期的结果?这计算a0和b0,这是我想做的另一个计算。但是a0-b1呢?最后一件事是我绝对不希望它计算整个阵列,只有50个点左右。不管我选什么。嗯,我用它会犯各种各样的错误。显然,我先修复了阵列。但是我仍然得到了“nil:NilClass(NoMethodError)”的“undefinedmethod`+”,非常感谢!虽然我必须投入。才能让它发挥作用。这可能也是您早期代码的部分问题。我以前遇到过这个问题,我认为它可以很容易地将数组识别为正确的数据类型,但它似乎没有做到这一点。我不确定它是否正常,我在windows上。它也有同样的问题,不能一起计算数组。你把什么放在f上?它在哪里不识别数据类型。。你能告诉我吗?是的,谢谢!这对我来说是最好的解决办法。有了它,我还可以在使用方法/类时输入数学本身。这样,我就可以使用这一个代码库来创建我需要的一切。非常感谢基本上,你的回答开启了解决所有这些问题的方法。
Array.calculate_difference(a,b,50)