ruby - 为什么这个 .each block 返回的结果与 .select 不同?

标签 ruby select each

来自 CodeQuizzes #6:使用包含字母“a”的所有元素从 captain_planet 数组创建一个新数组。

captain_planet = ["earth", "fire", "wind", "water", "heart"]

我理解他们的回答:

captain_planet.select do |word|
  word.include?("a")
end

但是,我似乎无法弄清楚为什么这不会返回相同的东西:

ret = []

captain_planet.each do |x|
    if x.include?('a')
        ret.push(x)
    end
end

想法?

最佳答案

尝试在 block 结束后查看 ret 的输出。

2.0.0p247 :001 > ret = []
 => []
2.0.0p247 :002 > captain_planet = ["earth", "fire", "wind", "water", "heart"]
 => ["earth", "fire", "wind", "water", "heart"]
2.0.0p247 :003 > captain_planet.each do |x|
2.0.0p247 :004 >         if x.include?('a')
2.0.0p247 :005?>             ret.push(x)
2.0.0p247 :006?>         end
2.0.0p247 :007?>   end
 => ["earth", "fire", "wind", "water", "heart"]
2.0.0p247 :008 > puts ret
earth
water
heart
 => nil

关于ruby - 为什么这个 .each block 返回的结果与 .select 不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21323934/

相关文章:

ruby-on-rails - HABTM重复记录

Ruby:将 CSV 列表转换为单独的对象

mysql - 在一个大表中搜索 varchar

javascript - foreach 未在事件 js 内执行

jquery每次早退

javascript - 将参数传递给 jQuery 每个函数

ruby-on-rails - Assets 管道中不存在 Assets "application.js"

ruby-on-rails - Bundler 未加载 gem

php - 如何创建这个 mysql "SELECT"查询?

mysql - 从多个表中获取不同的结果