ruby-on-rails - Ruby 中是否有一种方法可以根据逻辑条件将一个数组分成两个较小的数组?

标签 ruby-on-rails ruby

假设我有一个数组中的元素列表,但有一种合乎逻辑的方法可以将它们分成两组。我想根据该标准将这些元素放入两个较小的数组中。下面是一些有效的代码,有助于说明我的意思:

foo = ['a', 'bb', 'c', 'ddd', 'ee', 'f']
 => ["a", "bb", "c", "ddd", "ee", "f"] 
a = foo.select{|element| element.length == 1}
 => ["a", "c", "f"]
b = foo.reject{|element| element.length == 1}
 => ["bb", "ddd", "ee"]

我似乎记得看到过某种方式,单个方法调用可以通过这种方式同时分配 a 和 b,但我不记得它是什么了。它看起来像

matching, non_matching = foo.mystery_method{|element| element.length == 1}

我是不是疯了,或者 Ruby 和/或 Rails 中是否存在这样的方法?

最佳答案

是的! http://ruby-doc.org/core-1.9.3/Enumerable.html#method-i-partition

matching, non_matching = foo.partition {|element| element.length == 1}

关于ruby-on-rails - Ruby 中是否有一种方法可以根据逻辑条件将一个数组分成两个较小的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12232616/

相关文章:

ruby-on-rails - 在 Rails 中实现多表继承的最干的方法是什么?

ruby-on-rails - 我如何使用ruby将字节转换为base64

ruby-on-rails - 使用 Ruby on Rails + PostgresQL 显示 2 周或更早的地点

ruby-on-rails - Ruby on Rails 错误 ActiveRecord::PendingMigrationError

ruby-on-rails - 在 Rails 中,我可以在它返回之前在 Action 中访问 response.body 吗?

ruby-on-rails - 在 Rails 4 编辑表单中禁用使用数据库值自动填充选择字段

ruby-on-rails - 从脚手架调用自定义 erb 生成器

javascript - 如何从单个请求的 AJAX 调用中删除 header ?

ruby - 如何检查字符串是否是 Ruby 中的整数?

ruby-on-rails - 启用 Rack::Deflater 时 ETag 发生变化