这就是我正在尝试的
class Lorem
def ipsum &block
data = get_data
data.each { |id| block.call dolor(id) } if block_given?
data
end
def dolor id
{dolor: id}
end
private
def get_data
[1, 2, 3] # some fake data
end
end
stuff = []
panda = Lorem.new
panda.ipsum { |thing| stuff << thing }
puts stuff.inspect
# => [{dolor: 1}, {dolor: 2}, {dolor: 3}]
代码气味!
这块感觉真的很恶心。特别是与block_given?
. 有没有更好的写法?
def ipsum &block
data = get_data
data.each { |id| block.call dolor(id) } if block_given?
data
end
我可以以某种方式使用&method
或其他一些魔法吗?