我是Ruby on Rails的新手。有沒有更優雅或簡潔的方式來做到這一點?簡明的方法來設置默認值?
foo = params[:foo].nil? ? 'default' : params[:foo]
我只是想分配一個默認值,如果參數不存在。我的方式似乎有點笨重。
我是Ruby on Rails的新手。有沒有更優雅或簡潔的方式來做到這一點?簡明的方法來設置默認值?
foo = params[:foo].nil? ? 'default' : params[:foo]
我只是想分配一個默認值,如果參數不存在。我的方式似乎有點笨重。
如果您想爲一個鍵設置默認值,Hash#fetch
是您的答案。
如果傳遞一個塊,它將返回塊的值,如果該鍵不在PARAMS中。
params = {}
params.fetch(:foo) { 'default' }
=> "default"
如果默認是容易計算,可以一樣好做,因爲在該方法的第二個參數:
params = {}
params.fetch(:foo, 'default')
=> "default"
如果您想爲整個哈希默認情況下,應該看看#default=
和#default_proc
。由於你的問題涉及params
,我猜你不能用合適的默認值初始化散列。
順便說一句,你的方式不會返回nil
如果該值設置爲nil
,但獲取將正確返回nil
。
params[:foo] = nil
params.fetch(:foo) { 'default' }
=> nil
的等效短:
foo = params[:foo].nil? ? 'default' : params[:foo]
是
foo = params[:foo] || 'default'
另一種選擇是使用presence
方法,檢查該代碼:
foo = params[:foo].presence || 'default'
presence
檢查該值是否存在(即不是nil
/空),如果是,則返回該值,否則返回nil
。||
將值返回至其權如果一個公司letf是nil
。請注意,此選項還將設置foo
到'default'
如果params[:foo]
是空的。
這是*正是*我在找什麼。 –