假设我有一个 Ruby 类,Flight
。 Flight
上有一个 attr_accessor :key
。如果有一个此类的实例数组:flights = [flight1, flight2, flight3]
,我有一个“目标键”,比如说“2jf345”,我想根据它找到一个航类键,来自该数组 - 我应该使用哪种代码?
这是我要使用的代码:
航类[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
,这意味着您实际上并没有使用您要查找的 key 的航类,这意味着 find
也将返回 nil
。
关于基于对象属性定位的 Ruby 数组方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8017307/