看不明白块传参的方法,请大手子讲解一下以下代码的传参过程和具体传给谁,传什么。
代码如下,代码不完整,从项目中摘除下来的。只是表达这两个方法调用的方式。 激不尽!!
假设我们是这样调用一个方法的:
some_method do |arg| puts arg end
那么我们可以用两种方法编写 some_method:
some_method
def some_method(&block) block.call(1) if block # 这里的 block 就是一个 proc 对象 end
或者
def some_method yield 1 if block_given? # yield 就是调用附加上去的这个 block 的意思,block_given? 是一个预设方法 end
您说的这个我可以理解,能帮我稍微解释下我上边那个每行代码的调用顺序么?
到了 safe_run 里面,先执行 block.call,也就是那个 halt 和后面的代码,那个 block 里最后的 yield 会执行最下面 with_service_runing 带的那个 block。两层执行完之后,再继续执行 safe_run 里面剩下的代码
safe_run
block.call
halt
yield
with_service_runing