• 我佛山的,打算找个机会到你们公司看看,希望有机会可以为贵公司效力!

  • 快捷键可以直接进 Settings 里面查的。

  • Ctrl + Shift + , 生成 <% %>

  • 透彻理解 Ruby 中的 return at 2020年05月13日

    我测试了一下,其实块中 return 语句会返回的就是定义这个块的地方。下面举例:

    def test
      proc = Proc.new { return 3 }
      proc.call
      puts "test finished"
    end
    

    在执行了 proc. call 之后,test 方法会 return 3。然而,这是因为 Proc.new 写在了 test 方法中而不是因为 proc.call 写在了 test 方法中。換言之,return 跳出的是 Proc.new 所在的方法,而非 proc.call 所在的方法。

    为了证明这一点,我们可以尝试以下代码:

    def test(&block)
      block.call
    end
    
    p = proc { return 10 }
    num = test(&p)
    p num
    

    上面这段代码的最后一行是不会执行到的。因为 p = proc { return 10 } 这行意味着 call 这个块时会从当前定义这个块的上下文中 return (定义这个块时不在任何 method 中) 。所以当这个块传给了 test 方法并在其中调用时,它直接就从最外围 return 了 (就是定义 proc 的上下文),导致这个程序也就结束了,p num 这行还没来的及执行。