Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 传递给映射的块的长版本返回枚举数?_Arrays_Ruby_Enumerator - Fatal编程技术网

Arrays 传递给映射的块的长版本返回枚举数?

Arrays 传递给映射的块的长版本返回枚举数?,arrays,ruby,enumerator,Arrays,Ruby,Enumerator,为什么将块传递给数组映射(下面的2)的长版本返回枚举数,而下面的1和3返回数组 方法#1:返回一个数组 result = [1, 2, 3].map do |num| num * 2 end p result p [1, 2, 3].map {|num| num * 2} 方法#2:返回枚举数 p [1, 2, 3].map do |num| num * 2 end 方法#3:返回一个数组 result = [1, 2, 3].map do |num| num * 2 end

为什么将块传递给数组映射(下面的2)的长版本返回枚举数,而下面的1和3返回数组

方法#1:返回一个数组

result = [1, 2, 3].map do |num|
  num * 2
end
p result
p [1, 2, 3].map {|num| num * 2}
方法#2:返回枚举数

p [1, 2, 3].map do |num|
  num * 2
end
方法#3:返回一个数组

result = [1, 2, 3].map do |num|
  num * 2
end
p result
p [1, 2, 3].map {|num| num * 2}
在#2中,您将
map
的返回值(它是一个枚举器)传递到
p

[1,2,3].map#返回枚举数

另一方面,在#1和#3中,您将块直接传递到
map
,因此返回值是一个数组

p ([1, 2, 3].map do |num|
  num * 2
end) # returns an array
如果你把整个东西都放在括号里,它会给你正确的返回值