gpt4 book ai didi

ruby - 确保值在集合中,如果不在集合中则设置默认值

转载 作者:数据小太阳 更新时间:2023-10-29 08:16:30 26 4
gpt4 key购买 nike

我正在做这样的事情来检查参数是否在一个集合中,如果不在则设置一个默认值。它看起来不必要地罗嗦:

allowed_types = [:poem, :product, :news, :facebook, :tweet]
@type = params[:type]
@type = :poem unless allowed_types.include?(@type)

最符合 Ruby 的方法是什么?

最佳答案

这个怎么样:

allowed_types = [:poem, :product, :news, :facebook, :tweet]
@type = allowed_types.include?(params[:type]) ? params[:type] : :poem

看到我们在这里,我会说恕我直言,类似于 Hash#fetch 的 Array 方法会很有用;像这样的东西:

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

所以有人可以这样做:

@type = allowed_types.fetch_value(params[:type], :poem)

关于ruby - 确保值在集合中,如果不在集合中则设置默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16037105/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com