我遇到了一个解决问题的问题,我的解决方案如下所示。
class Array
def my_each(&prc)
prc ||= proc { |ele| puts ele }
idx = 0
while idx < self.length
prc.call(self[idx])
idx += 1
end
self
end
end
puts ["apple", "banana"].my_each {} #=> ["apple, "banana"]我的问题是,为什么结果
#=>"apple"
#=>"banana"
#=>["apple", "banana"]这是不是因为我的代码块没有运行,只返回了self?
发布于 2016-04-21 07:40:59
原因很简单:你的块是空的,它什么也不做。
如果要打印单个项目,则需要将它们打印在块中:
puts ["apple", "banana"].my_each {|el| puts el }
# apple
# banana
# apple
# banana或者不传递块,这样就会触发默认的块:
puts ["apple", "banana"].my_each
# apple
# banana
# apple
# bananahttps://stackoverflow.com/questions/36756930
复制相似问题