测试块中的代码什么时候被执行

# =============================
# 目标1:
# 1、测试块中的代码什么时候被执行
# =============================
# 结论
# 1、只有在块被真正调用的时候才会被执行:对块调用方法yield/call
# 说明: 一般方法中都会用yield去调用块,使得传入方法的块中的代码马上执行,这难免会让人产生代码只要被放在do..end或{}
# 就会被马上执行的错觉。
# 下面的代码只有当去掉注释时,块中的代码才会被执行
# 2、调用yield后,就一定要传入块,否则就产生错误,除非在加入了block_given?判断
# =============================
lambda {
  def my_method(&block)
    # yield
    # block.call
  end

  my_method do
    lastname = "Caroline"
    puts lastname # =>这里不会有输出,除非去掉方法中的注释
  end
}.call