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

标签 ruby arrays syntax

假设我有一个 Ruby 类,FlightFlight 上有一个 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/

相关文章:

mysql - SQL:删除列语法错误

assembly - 修改vim中的语法高亮,删除#作为注释

ruby-on-rails - ruby 和 rails 上的 Hello world (ror)

ruby-on-rails - 将键值对添加到 Ruby 中的哈希

c - 将整个数组作为参数传递给函数

javascript - 当您将 'print' 发送到屏幕时,如何更改对象属性名称

php - mysql_fetch_assoc 中的 is_numeric()

javascript - 有一个简单的浏览器内 JS 游戏需要它在 'backend' 上使用 Ruby 脚本

ruby - 迭代 Excel 工作簿并对所有内容建立索引?

c++ - 类中的对象数组