我可以传递一个数组和一个块作为参数吗?
Can I pass an array and a block as a parameter?
目前正在学习创建块和我自己版本的数组方法。我想知道是否可以将数组和块作为参数传递给方法。下面是我正在处理的代码,它应该做什么是不言自明的,但我一直收到错误。特别是在方法调用和我传递代码块的地方。
def mapper(arr, &prc)
new_array = []
arr.length.times do |i|
new_array << prc.call(arr[i])
end
new_array
end
mapper([1,2,3,4], {|i| i * 2})
您可以通过将块传递到括号外(与方法调用相邻)来实现:
p mapper([1, 2, 3, 4]) { |index| index * 2 }
# [2, 4, 6, 8]
否则会导致语法错误。 Ruby 不知道块被传递到哪里。
附带说明一下,您也可以仅将数组定义为所需参数,然后生成传递的块:
def mapper(arr)
arr.size.times.map do |i|
yield(arr[i])
end
end
p mapper([1, 2, 3, 4]) { |index| index * 2 }
# [2, 4, 6, 8]
目前正在学习创建块和我自己版本的数组方法。我想知道是否可以将数组和块作为参数传递给方法。下面是我正在处理的代码,它应该做什么是不言自明的,但我一直收到错误。特别是在方法调用和我传递代码块的地方。
def mapper(arr, &prc)
new_array = []
arr.length.times do |i|
new_array << prc.call(arr[i])
end
new_array
end
mapper([1,2,3,4], {|i| i * 2})
您可以通过将块传递到括号外(与方法调用相邻)来实现:
p mapper([1, 2, 3, 4]) { |index| index * 2 }
# [2, 4, 6, 8]
否则会导致语法错误。 Ruby 不知道块被传递到哪里。
附带说明一下,您也可以仅将数组定义为所需参数,然后生成传递的块:
def mapper(arr)
arr.size.times.map do |i|
yield(arr[i])
end
end
p mapper([1, 2, 3, 4]) { |index| index * 2 }
# [2, 4, 6, 8]