基于对象属性定位的Ruby数组方法是什么?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (57)

假设我有一个Ruby类,FlightFlight有一个attr_accessor :key。如果有这个类的实例的数组:flights = [flight1, flight2, flight3]我有一个“目标键”,比如说“2jf345”,并且我想根据它的关键字从该数组中找到一个航班 - 我应该使用哪种代码?

这是我准备使用的代码:

flights[flights.map { |s| s.key }.index(target_key)]

但是对于Ruby来说,应该有一个更简单的方法。此外,上面的代码为我返回一个错误 - `[]': no implicit conversion from nil to integer (TypeError)。我认为这意味着它根本没有返回索引。

提问于
用户回答回答于

可以使用find获取Flight对象,而不是尝试使用index获取索引:

flights.find {|s| s.key == target_key }

但是,错误消息提示index(target_key)返回nil,这意味着实际上没有使用正在查找的代号的航班,这意味着它find也会返回nil

扫码关注云+社区