我无法理解之间的差异map
和each
,以及何时何地使用它们.
我读过" 地图做什么? "和" Ruby Iterators "但是想要一些澄清.
如果我有:
z = [1,2,3].map {|x| x + 1}
Run Code Online (Sandbox Code Playgroud)
map
获取数组中的每个元素z
并为每个元素添加一个元素,但是除非我添加,否则它不会改变原始数组!
.
另一方面:
y = [1,2,3].each {|x| x + 1}
Run Code Online (Sandbox Code Playgroud)
回报[1,2,3]
.这对我来说很困惑,因为:
names = ['danil', 'edmund']
names.each { |name| puts name + ' is a programmer' }
Run Code Online (Sandbox Code Playgroud)
收益:
Danil is a programmer
Edmund is a programmer
Run Code Online (Sandbox Code Playgroud)
在我的第二个例子中,不允许每个数组元素增加的内容是什么1
,而在最后一个例子中,字符串被附加到数组中的所有内容?
所有的学分都交给了Speransky Danil,我把这些例子都拿走了.
该map
方法采用enum
给定的某个块,并迭代它以执行一些逻辑。在你的情况下,逻辑是x+1
。正如你所说,除非你使用它,否则它不会改变任何东西!
。
each
只是返回正在调用的数组。
让我们举个例子:
names = ["bob"]
Run Code Online (Sandbox Code Playgroud)
如果我们这样做:
names.each{|names| names + "somestring"}
Run Code Online (Sandbox Code Playgroud)
输出仍然是["bob"]
. 您的第二个示例不同的原因是由于puts
.
作为练习,尝试这样做:
y = [1,2,3].each {|x| puts x + 1}
Run Code Online (Sandbox Code Playgroud)
你会得到:
2
3
4
[1,2,3]
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1183 次 |
最近记录: |