【发布时间】:2020-05-10 21:50:47
【问题描述】:
我正在用 Ruby 编写一个Array#map! 方法,它应该接受一个过程:
def map!(&blck)
(0..self.length-1).each do |i|
self[i] = blck.call(i)
end
self
end
如果 proc 接受 1 个参数,这可以正常工作,但如果有多个参数(或者如果它接受字符而不是索引)则不行。两个过程示例:
prc1 = Proc.new do |ch|
if ch == 'e'
'3'
elsif ch == 'a'
'4'
else
ch
end
end
和
prc2 = Proc.new do |ch, i|
if i.even?
ch.upcase
else
ch.downcase
end
end
有没有办法做到这一点?
【问题讨论】: