我正在做这样的事情来检查一个参数是否在一个集合中,并设置一个默认值,如果不是.它看起来不必要地冗长:
allowed_types = [:poem, :product, :news, :facebook, :tweet]
@type = params[:type]
@type = :poem unless allowed_types.include?(@type)
Run Code Online (Sandbox Code Playgroud)
Ruby最直接的方法是什么?
那这个呢:
allowed_types = [:poem, :product, :news, :facebook, :tweet]
@type = allowed_types.include?(params[:type]) ? params[:type] : :poem
Run Code Online (Sandbox Code Playgroud)
看到我们在这里,我会说恕我直言,这将是一个有用的类似的数组方法Hash#fetch; 就像是:
class Array
# `fetch` is already taken (index fetching)
def fetch_value(something, ifnone = nil)
include?(something) ? something : ifnone
end
end
[:poem, :product, :news].fetch_value(:news, :poem) #=> :news
[:poem, :product, :news].fetch_value(:salad, :poem) #=> :poem
Run Code Online (Sandbox Code Playgroud)
所以有人可以这样做:
@type = allowed_types.fetch_value(params[:type], :poem)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
109 次 |
| 最近记录: |