在Ruby中,eachmapcollect的功能有什么不同吗?

推荐答案

each不同于mapcollect,但mapcollect是相同的(从技术上说,mapcollect的别名,但根据我的经验,map的使用频率要高得多).

each为(Enumerable)接收器中的每个元件执行封闭块:

[1,2,3,4].each {|n| puts n*2}
# Outputs:
# 2
# 4
# 6
# 8

mapcollect生成一个新的Array,其中包含应用于接收器每个元素的块的结果:

[1,2,3,4].map {|n| n*2}
# => [2,4,6,8]

也有map!/collect!定义在Array上;它们在适当的位置修改接收器:

a = [1,2,3,4]
a.map {|n| n*2} # => [2,4,6,8]
puts a.inspect  # prints: "[1,2,3,4]"
a.map! {|n| n+1}
puts a.inspect  # prints: "[2,3,4,5]"

Ruby相关问答推荐

Ruby类构造函数使用`()`而不是`. new()`

鲁比.METHOD_MISSING+SEND对于带有命名参数的混合参数失败

配置 SubLime Linter 插件以使用 Ruby 1.9 语法

数组到哈希:字数

如何在 Ruby 的 RestClient gem 中设置超时?

在 Go (golang) 中编写一个 Ruby 扩展

Ruby 中的字符串是可变的吗?

Ruby:如何判断字符是大写还是小写

为什么在Ruby中用空格分隔的两个字符串连接在一起?

如何找到安装 Ruby Gem 的路径(即 Gem.lib_path c.f. Gem.bin_path)

如何将 STDOUT 捕获到字符串?

ActiveSupport::Memoizable 指的是哪种 Ruby memoize 模式?

在 Ruby 中打开默认浏览器

何时使用在 Ruby 中启动子进程的每种方法

如何使用 Ruby 的 self 关键字

如何在没有 RVM 的 Ubuntu 上安装 Ruby 2

使用哈希值呈现 ERB 模板

如何使用 Ruby-Rails 删除文件夹的所有内容?

判断文件名是文件夹还是文件

如何使用 Ruby 删除回车?