我需要以下逻辑。如果数组包含value
,则返回它,否则返回一些默认值。到目前为止,我发现这可以通过使用delete
来实现:
array.delete(value) || default_value
但是,很明显,它修改了数组。有没有类似的函数,比如默认情况下的
fetch
,它接受一个元素而不是一个索引?我知道这可以重写为
array.include?(value) ? value : default_value
,问题只是为了更干净的代码。 最佳答案
更新:有一种方法我能想到,但那比三元法更难理解:
(array & [value]).first || default_value
如果你这么想的话,你可以把它修补成
Array
:class Array
def fetch_value(value, default)
(self & [value]).first || default
end
end
a = *1..3
a.fetch_value(4, "foo")
#=> "foo"
旧的答案是,在我意识到您要使用查找值而不是索引之前:
Array#fetch接受可选的第二个参数:
array.fetch(index, default)
下面是一个例子:
a = *1..3
a.fetch(4, "foo")
#=> "foo"
关于ruby - 数组获取或默认功能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9974892/