Ruby 数组获取或默认函数
我需要以下逻辑。如果数组包含Ruby 数组获取或默认函数,ruby,arrays,Ruby,Arrays,我需要以下逻辑。如果数组包含值,则返回它,否则返回一些默认值。到目前为止,我发现这可以通过使用delete实现: array.delete(value) || default_value 但是,很明显,它修改了数组。是否有类似的函数,如默认值的fetch,它采用元素而不是索引 另外,我知道这可以重写为数组。包括?(值)?值:默认值,这个问题只是为了更干净的代码。更新:我可以想到一种方法,但这比三元法更难理解: (array & [value]).first || default_va
值
,则返回它,否则返回一些默认值。到目前为止,我发现这可以通过使用delete
实现:
array.delete(value) || default_value
但是,很明显,它修改了数组。是否有类似的函数,如默认值的fetch
,它采用元素而不是索引
另外,我知道这可以重写为
数组。包括?(值)?值:默认值,这个问题只是为了更干净的代码。更新:我可以想到一种方法,但这比三元法更难理解:
(array & [value]).first || default_value
如果您愿意,您可以将其拼接到数组中
:
class Array
def fetch_value(value, default)
(self & [value]).first || default
end
end
a = *1..3
a.fetch_value(4, "foo")
#=> "foo"
旧答案,在我意识到您希望使用值进行查找而不是索引之前:
接受可选的第二个参数:
array.fetch(index, default)
下面是一个例子:
a = *1..3
a.fetch(4, "foo")
#=> "foo"
更新:我可以想出一种方法,但这比三元法更难理解:
(array & [value]).first || default_value
如果您愿意,您可以将其拼接到数组中
:
class Array
def fetch_value(value, default)
(self & [value]).first || default
end
end
a = *1..3
a.fetch_value(4, "foo")
#=> "foo"
旧答案,在我意识到您希望使用值进行查找而不是索引之前:
接受可选的第二个参数:
array.fetch(index, default)
下面是一个例子:
a = *1..3
a.fetch(4, "foo")
#=> "foo"
他不想指定索引
。他想知道数组是否包含值,然后返回该值,否则返回默认值。他不想指定索引。他想知道数组是否包含一个值,然后返回该值,否则返回默认值。恐怕你找不到更简单的代码(后者),这意味着你必须实现你自己的fetch
,它隐藏了复杂性:-)替代方法(如果默认值是6
):ary.find(lambda{6}{x}x==6}
我担心您找不到任何更简单的代码(后者),这意味着您必须实现自己的fetch
,它隐藏了复杂性:-)备选方案(如果默认值是6
):ari.find(lambda{6}){x | x==6}