2015-02-23 53 views
-1

是否有可能根據輸入類型編寫一種行爲不同的方法?我試圖寫出一個這樣的行爲採用參數或塊的方法

hello("derick") 
#=> "hello derick!" 

hello do 
    "derick" 
end 
#=>"<hello>'derick'<hello/>" 

回答

1

是的,它可能在Ruby中。使用block_given?你可以檢查一個塊是否被傳遞並執行該塊,否則返回任何其他結果。

def hello(s=nil) 
    if block_given? 
    "<hello>'#{yield}'</hello>" 
    else 
    "hello #{s}" 
    end 
end 

puts hello("derick!") 

puts (hello do 
    "derick" 
end) 

HTH