开发者社区> 问答> 正文

Array#each与Array#map

hash = { "d" => [11, 22], "f" => [33, 44, 55] }

case 1

hash.map {|k,vs| vs.map {|v| "#{k}:#{v}"}}.join(",") => "d:11,d:22,f:33,f:44,f:55"

case 2

hash.map {|k,vs| vs.each {|v| "#{k}:#{v}"}}.join(",") => "11,22,33,44,55" 唯一的区别是案例1使用vs.map,案例2使用vs.each。

这里发生了什么? 问题来源于stack overflow

展开
收起
保持可爱mmm 2020-02-08 13:28:44 391 0
1 条回答
写回答
取消 提交回答
  • Array#each 为数组的每个元素执行给定的块,然后返回数组本身。

    Array#map 也为数组的每个元素执行给定的块,但返回一个新数组,其值是该块每次迭代的返回值。

    示例:假设您已经定义了一个数组:

    arr = ["tokyo", "london", "rio"] 然后尝试执行each:

    arr.each { |element| element.capitalize }

    => ["tokyo", "london", "rio"]

    注意,返回值就是同一数组。each块内的代码被执行,但是不返回计算出的值;并且由于代码没有副作用,因此该示例没有做任何有用的工作。

    相反,调用数组的map方法将返回一个新数组,其元素是执行该map块的每一轮的返回值:

    arr.map { |element| element.capitalize }

    => ["Tokyo", "London", "Rio"]

    2020-02-08 13:29:01
    赞同 展开评论 打赏
问答分类:
C++
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载