gpt4 book ai didi

ruby-on-rails - 是否有返回第一个 truthy 映射值的惯用 ruby​​/rails 方法?

转载 作者:数据小太阳 更新时间:2023-10-29 06:50:22 24 4
gpt4 key购买 nike

我有一个对象数组,其中一些响应 :description,我想从第一个对象中获取真实描述的描述。我可以这样做:

objects.detect{|o| o.try(:description)}.description

或者这个:

objects.map{|o| o.try(:description)}.detect{|o| o}

但第一个不是 DRY(描述在那里两次),第二个在找到值之前遍历整个数组。 ruby 标准库或 Rails 的扩展中是否有任何东西可以让我做这样的事情:

objects.detect_and_return{|o| o.try(:description)}

我知道我可以很容易地编写它,但标准库足够大,我可能不需要。有没有像我的 detect_and_return 一样工作的函数?

最佳答案

我还没有见过这样的方法,我找到的最接近的方法是在 gem merb-cache 中找到的方法 capture_first。似乎他们偶然发现了同样的问题并实现了这个:

module Enumerable
def capture_first
each do |o|
return yield(o) || next
end
nil
end
end

您还可以查看 ArrayEnumerable Ruby 中的方法 facets图书馆,看看你是否找到类似的东西。 Facets 包含很多好东西,所以您可能会走运。

关于ruby-on-rails - 是否有返回第一个 truthy 映射值的惯用 ruby​​/rails 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6926350/

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