ruby - 是否有用于在条件为真时从数组中弹出项目的 ruby​​ 习惯用法

标签 ruby

是否有 Ruby 习惯用法用于在条件为真时从数组中弹出项目并返回集合?

即,

# Would pop all negative numbers from the end of 'array' and place them into 'result'.
result = array.pop {|i| i < 0} 

据我所知,上面的内容不存在。

我正在使用

result = []
while array.last < 0 do
  result << array.pop
end

最佳答案

也许您正在寻找take_while

array = [-1, -2, 0, 34, 42, -8, -4]
result = array.reverse.take_while { |x| x < 0 }

result 将是 [-8, -4]

要返回原始结果,您可以改用 drop_while

result = array.reverse.drop_while { |x| x < 0 }.reverse
在这种情况下,

result 将是 [-1, -2, 0, 34, 42]

关于ruby - 是否有用于在条件为真时从数组中弹出项目的 ruby​​ 习惯用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15415035/

相关文章:

Ruby:从文件实例化对象

ruby - 为什么这段代码会填充每个数组?

ruby-on-rails - ImageMagick : ERROR: Failed to build gem native extension

ruby-on-rails - 如何完全卸载 rails 3.0.0.beta3 及其所有依赖项?

ruby - rbenv gem 的 rdoc 在哪里?

Ruby:如何解析字符串以提取内容并将其分配给变量

ruby-on-rails - 使用 Capistrano 3 设置默认阶段

python - 用于 Python 的 Markaby/Erector

ruby-on-rails - 如何使用 rvm 升级 ruby​​ on rails 应用程序的 ruby​​ 版本

ruby - 让 ruby​​ Pathname#join 表现得像 File.join 并且不会破坏接收者路径的简单方法?