甲params={}
作爲方法的參數表示可以發送可變參數散列作爲參數,而方法調用。如果沒有參數傳遞,它是作爲一個空的哈希,默認處理。
所以,對於上面的方法,你可以調用go_to_print_options(flow: 'short', mobile: 'apple')
。
你可能不知道,這是不是hash
;但有一點 - 如果Hash
是函數調用的最後一個參數,則可以跳過大括號。
如此高效地爲您的方法: go_to_print_options(flow: 'short', mobile: 'apple')
和go_to_print_options({flow: 'short', mobile: 'apple'})
是相同的。
而在函數定義中,{flow: 'short', mobile: 'apple'}
映射到params
。
params[:flow] #=> 'short'
params[:mobile] #=> 'apple'
params[:foo] #=> nil #since no such key is present
請注意,這些都是上面的符號,你可以傳遞字符串作爲鍵太爲:go_to_print_options("flow" => 'short', "mobile" => 'apple')
如果你只需要調用go_to_print_options
。它仍然有效,並且params
將是一個空的散列({}
),絕對沒有任何密鑰,無論如何。
通過傳遞Hash
作爲參數,你可以發送可變數量的參數給你的方法。在方法定義中,您可以將它們作爲params['flow']
進行訪問,這將爲上述調用提供short
的值。
if 'short' == params['flow']
是Ruby中的一個簡單條件。您正在檢查params['flow']
和short
的值是否相等。如果params['flow']
確實是short
,則將調用底層塊(short_flow_to_print_options(params)
)
'params = {}'實際上只是表示該方法採用一個參數,其默認值爲空Hash。說'go_to_print_options(6)'仍然是一個有效的方法調用,即使它會在運行時遇到TypeError。 –
是的,我知道。我也應該加上這個答案。 :) 謝謝! – kiddorails