不叫我嘗試這種代碼:區塊紅寶石
def m
return yield if block_given?
"no block"
end
puts m do
x = 2
y = 3
x*y
end
輸出怎麼會是「不堵」? 我對m構造塊的方式有什麼問題? {「testing」}會起作用。
不叫我嘗試這種代碼:區塊紅寶石
def m
return yield if block_given?
"no block"
end
puts m do
x = 2
y = 3
x*y
end
輸出怎麼會是「不堵」? 我對m構造塊的方式有什麼問題? {「testing」}會起作用。
刪除puts
:
def m
return yield if block_given?
"no block"
end
m do
x = 2
y = 3
x*y
end
它將始終返回m
塊中的最後一條語句。
這已在[Ruby Block Syntax Error](http://StackOverflow.Com/q/6854283/)中得到解答,[傳遞給'each'的代碼塊與括號一起使用,但不與'do'-'end '(ruby)](http://StackOverflow.Com/q/6718340/),[塊定義 - 大括號和'''''''end'之間的區別?](http://StackOverflow.Com/q/6179442/ ),[沒有'do''end的Ruby多行塊]](http://StackOverflow.Com/q/3680097/),[使用'do'塊vs括號'{}'](http://StackOverflow.Com/q/2122380 /),[這些塊的編碼風格在Ruby中的區別或價值是什麼?](http://StackOverflow.Com/q/533008/),... – 2015-04-05 12:26:42
... [Ruby塊和unparenthesized參數](http ://StackOverflow.Com/q/420147/),[爲什麼'do' /'end'和'{}'總是等價的?](http://StackOverflow.Com/q/7487664/),[ Ruby塊中的奇怪缺陷](http://StackOverflow.Com/q/7620804/),[將塊傳遞給方法 - Ruby](http:/ /StackOverflow.Com/q/10909496/),['instance_eval' block not supplied?](http://StackOverflow.Com/q/12175788/),[block syntax differences cause「LocalJumpError:no block given(yield) '']](http://StackOverflow.Com/q/18623447/),... – 2015-04-05 12:27:43
... ['instance_eval'不能與'do' /'end'塊一起使用,只能使用'{}'-blocks](http: //StackOverflow.Com/q/21042867/),[''proc'在與'do'' end'一起使用時拋出錯誤](http://StackOverflow.Com/q/25217274/)。 – 2015-04-05 12:28:06