请问有谁能帮我理解"yield self"和"yield"之间的区别吗?
class YieldFirstLast
attr_accessor :first, :last
def initialize(first = nil, last = nil)
@first = first
@last = last
yield self if block_given?
end
def hello
puts "#{@first} #{@last} says hello!"
end
end
self
是一个指向实例的引用,但像我说的那样,这里没有什么特别的。本质上,将yield
视为一个方法,它接受任何参数并将它们传递给块。有关多个参数,请参见编辑。 - numbers1311407yield
作为该方法的调用可能会有所帮助。块{|x, y| x + y }
类似于def fn(x, y) x + y end
。如果您不使用参数调用fn()
,您会期望在方法体中未定义x
,对吗? - numbers1311407