ruby - 我们有 'index' 和 'rindex' ,我们有 'find' 但没有 'rfind'

标签 ruby

当应用于数组时,index(用 block 调用)返回满足条件的第一个元素的索引,rindex 返回最后一个元素的索引.同样,我们有 find 来返回元素本身。但是,没有相应的 rfind 会返回满足条件的数组的最后一个元素。

Ruby 是否已经有实现此目的的方法?

在对 Array 类进行猴子修补之前,我想确定一下。

最佳答案

你可以这样做:

enum = [1, 2, 3, 4].reverse_each
# => #<Enumerator: [1, 2, 3, 4]:reverse_each>

enum.find(&:odd?)
# => 3

请注意,与使用 Array#reverse 不同,它不会创建立即丢弃的时间数组。

立即执行:

[1, 2, 3, 4].reverse_each.find(&:odd?)
# => 3

换句话说,我们有 reverse_each.find 而不是 rfind;没什么大不了的。

关于ruby - 我们有 'index' 和 'rindex' ,我们有 'find' 但没有 'rfind',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45838083/

相关文章:

html - wicked_pdf 不起作用——Ruby on Rails

html - 如何在不使用 Nokogiri 的情况下替换 ruby​​ 中的 html 标签?

ruby - Rspec:有没有办法在 before(:each) block 之后但在实际的 it block 之前执行代码?

java - 从 Java 执行 Ruby 脚本的运行时与 JRuby

ruby-on-rails - 如何避免法拉第请求编码获取参数?

ruby-on-rails - 如何从循环中在 ruby​​ 中创建 JSON 对象的 JSON 数组

ruby - 如何列出系统所需的 gem,以便在部署时自动安装它们?

ruby - 为什么这个 ruby 序列不适用于两位数?

ruby-on-rails - 在 Rails 中如何使用带索引的 find_each 方法?

ruby-on-rails - 如何在 ruby​​ on rails 中使用 aws-s3 或 aws-sdk gem 跨存储桶复制文件