gpt4 book ai didi

ruby-on-rails - 映射/收集第一个真实结果

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

考虑以下问题

users.collect do |user|
user.favorite_song.presence
end.compact.first

在这种情况下,我想要我在用户中遇到的第一首最喜欢的歌曲。

可以用更好的方式写吗?

我试过了

users.find do |user|
user.favorite_song.presence
end

但它会返回第一个用户最喜欢的歌曲,而不是最喜欢的歌曲本身。

最佳答案

如果 users 数组不是太大,您的第一个解决方案就可以,并且可以像这样重写:

users.map(&:favorite_song).compact.first

您还可以按如下方式修改第二种方法:

users.find { |user| user.favorite_song.present? }.favorite_song

这两种解决方案都假定某些用户中存在 favorite_song,如果不存在,则会引发异常。您可以使用 try(仅限 Rails)优雅地避免这种情况:

users.find { |user| user.favorite_song.present? }.try(:favorite_song)

关于ruby-on-rails - 映射/收集第一个真实结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18079081/

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