带块的可选参数?
Optional Parameters with blocks?
# multi_map
# Write a method multi_map that accepts an array, an optional number (n), and a block as arguments.
# The method should return a new array where each element of the original array is repeatedly run through the block n times.
# If the number argument is not passed in, then the the elements should be run through the block once.
# Examples
def multi_map(arr, &blc, *n)
narr = []
return narr
end
p multi_map(['pretty', 'cool', 'huh?']) { |s| s + '!'} # ["pretty!", "cool!", "huh?!"]
p multi_map(['pretty', 'cool', 'huh?'], 1) { |s| s + '!'} # ["pretty!", "cool!", "huh?!"]
p multi_map(['pretty', 'cool', 'huh?'], 3) { |s| s + '!'} # ["pretty!!!", "cool!!!", "huh?!!!"]
p multi_map([4, 3, 2, 7], 1) { |num| num * 10 } # [40, 30, 20, 70]
p multi_map([4, 3, 2, 7], 2) { |num| num * 10 } # [400, 300, 200, 700]
p multi_map([4, 3, 2, 7], 4) { |num| num * 10 } # [40000, 30000, 20000, 70000]
我需要制作一个接受数组、可选和块的方法。当我在 rspec 中 运行 这个框架程序时,我在调用参数时遇到错误。为什么会这样?
考虑以下几点:
irb(main):010:1* def mm(arr, *n, &blc)
irb(main):011:1* p arr; n.each(&blc)
irb(main):012:0> end
=> :mm
irb(main):013:0> mm("hello", "world") { |x| puts x }
"hello"
world
=> ["world"]
irb(main):014:0>
您在参数列表中的 *n
和 &blc
顺序错误。
# multi_map
# Write a method multi_map that accepts an array, an optional number (n), and a block as arguments.
# The method should return a new array where each element of the original array is repeatedly run through the block n times.
# If the number argument is not passed in, then the the elements should be run through the block once.
# Examples
def multi_map(arr, &blc, *n)
narr = []
return narr
end
p multi_map(['pretty', 'cool', 'huh?']) { |s| s + '!'} # ["pretty!", "cool!", "huh?!"]
p multi_map(['pretty', 'cool', 'huh?'], 1) { |s| s + '!'} # ["pretty!", "cool!", "huh?!"]
p multi_map(['pretty', 'cool', 'huh?'], 3) { |s| s + '!'} # ["pretty!!!", "cool!!!", "huh?!!!"]
p multi_map([4, 3, 2, 7], 1) { |num| num * 10 } # [40, 30, 20, 70]
p multi_map([4, 3, 2, 7], 2) { |num| num * 10 } # [400, 300, 200, 700]
p multi_map([4, 3, 2, 7], 4) { |num| num * 10 } # [40000, 30000, 20000, 70000]
我需要制作一个接受数组、可选和块的方法。当我在 rspec 中 运行 这个框架程序时,我在调用参数时遇到错误。为什么会这样?
考虑以下几点:
irb(main):010:1* def mm(arr, *n, &blc)
irb(main):011:1* p arr; n.each(&blc)
irb(main):012:0> end
=> :mm
irb(main):013:0> mm("hello", "world") { |x| puts x }
"hello"
world
=> ["world"]
irb(main):014:0>
您在参数列表中的 *n
和 &blc
顺序错误。