非常感兴趣,我在佛山,前几年还能在 BOSS 上面找到广佛两地有 Rails Developer 岗位,现在已经没有了。没想到在 Ruby China 还能看到有!
我佛山的,打算找个机会到你们公司看看,希望有机会可以为贵公司效力!
快捷键可以直接进 Settings 里面查的。
Ctrl + Shift + , 生成 <% %>
我测试了一下,其实块中 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 这行还没来的及执行。