块方法 - 如何一起计算数组 - ruby
Methods with blocks - how to calculate arrays together - ruby
我想创建一个方法,使用块以这种方式计算 2 个数组之间的总和; [1,2,3] + [2,4,6] = [3,6,9]。
这是我目前所知道的,我得到的错误告诉我参数数量错误。
*编辑。我必须使用一个方法和一个块来执行此操作
def arraycalc(x,y)
yield x,y
end
arraycalc([1,2,3], [2,4,6]){|x,y| x+y}
p arraycalc #[3,6,9]
我还是新人 Ruby。有人可以告诉我吗?
你应该使用Array#zip
方法:
[1, 2, 3].zip([2, 3, 4]).map { |x, y| x + y } # => [3, 5, 7]
更新:
def arraycalc(array1,array2)
result_array = array1.zip(array2)
result_array.map { |x, y| yield x,y } if block_given?
end
arraycalc([1, 2, 3], [2, 3, 4]) { |x, y| x + y } # => [3, 5, 7]
[[1,2,3],[2,4,6]].transpose.map{|a| a.sum}
[3,6,9]
你可以这样实现
def arraycalc a, b
a.zip(b).map {|x, y| yield x, y}
end
p arraycalc([1,2], [3,4]) {|x, y| x + y}
#=> [4, 6]
a = [1,2,3]
b = [4,5,6]
require 'matrix'
(Vector[*a] + Vector[*b]).to_a #=> [5,7,9]
或
(Matrix[a] + Matrix[b]).to_a #=> [5,7,9]
我想创建一个方法,使用块以这种方式计算 2 个数组之间的总和; [1,2,3] + [2,4,6] = [3,6,9]。
这是我目前所知道的,我得到的错误告诉我参数数量错误。
*编辑。我必须使用一个方法和一个块来执行此操作
def arraycalc(x,y)
yield x,y
end
arraycalc([1,2,3], [2,4,6]){|x,y| x+y}
p arraycalc #[3,6,9]
我还是新人 Ruby。有人可以告诉我吗?
你应该使用Array#zip
方法:
[1, 2, 3].zip([2, 3, 4]).map { |x, y| x + y } # => [3, 5, 7]
更新:
def arraycalc(array1,array2)
result_array = array1.zip(array2)
result_array.map { |x, y| yield x,y } if block_given?
end
arraycalc([1, 2, 3], [2, 3, 4]) { |x, y| x + y } # => [3, 5, 7]
[[1,2,3],[2,4,6]].transpose.map{|a| a.sum}
[3,6,9]
你可以这样实现
def arraycalc a, b
a.zip(b).map {|x, y| yield x, y}
end
p arraycalc([1,2], [3,4]) {|x, y| x + y}
#=> [4, 6]
a = [1,2,3]
b = [4,5,6]
require 'matrix'
(Vector[*a] + Vector[*b]).to_a #=> [5,7,9]
或
(Matrix[a] + Matrix[b]).to_a #=> [5,7,9]