说我有一个Ruby类,Flight.Flight有一个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).我认为这意味着它根本没有返回索引.
谢谢你的帮助.
sep*_*p2k 30
您可以使用find获取Flight对象,而不是尝试使用index获取索引:
flights.find {|s| s.key == target_key }
Run Code Online (Sandbox Code Playgroud)
但是,您的错误消息表明index(target_key)返回nil,这意味着您实际上没有带有您正在寻找的密钥的航班,这意味着它find也将返回nil.