class Song
attr_reader :a
def initialize
@a = []
end
def abc
@a << 10
end
end
def song
sing = Song.new
yield sing
end
def song(&block)
sing = Song.new
capture(sing , &block)
end
song do |a|
a.abc
a.abc
a.abc
end
end
我想问一下的是,yield sing 和 capture(sing , &block) 有什么不同 (ps:我写的是第一种,第二种用 capture(sing , &block) 是我在别的地方看到的,如果因为简化代码造成 capture 用法错误还请指出,见谅哈,因为我从来没用这样用过 capture)