block 的問題...? ( do..end vs. { xxx} )


#1

在測試一個 ruby 的語法中有個問題…

ruby 的 block 有二種方試

do
    xxxx
end

{ xxxx }

於是乎做了以下的測試…

但用 my_method.hello , my_method.hello2 都正常…
就把 do end 用 { } 取代就會有 error…

這是哪有問題? 還是在某些情況下 do …end 不等於 { xx }


#2

你…傳…hash進去做啥?

寫個簡易的 demo,define_method == method,Ruby下如果你寫錯和觀念錯誤,請加上括號,感謝您

define_method :hello1 do ; end #ok
define_method :hello2 , {}     #fail
define_method(:hello3 , {})    #fail
define_method(:hello4){}       #ok #同:hello1
#額外
define_method(:hello5 , &lambda{}) #ok : lambel
define_method(:hello6 , &Proc.new{}) #ok #同:hello1
define_method(:hello7 , &Proc.new(&Proc.new(&Proc.new do ; end))) #ok #純惡搞

anyway Ruby的陷阱在於很多東西都可以省,而新手省太多沒觀念很容易就會踩雷,這系列call method的文章之前都有,請在心中有小括號,該分開就分開,不然會變成 attr 傳入的,以上


#3

沒錯~~

果然正解…

看書練習時看到的都是省略的多~~

就比較沒 ( ) 的概念了…

以上

謝謝