2017-02-19 1 views
0

블록을 Array # map (아래 2 번)에 넘기는 긴 버전이 열거자를 반환하는 이유는 무엇입니까? # 1과 # 3이 배열을 반환하는 이유는 무엇입니까?지도에 전달 된 블록의 긴 버전은 열거자를 반환합니까?

방법 # 1 : 배열을

result = [1, 2, 3].map do |num| 
    num * 2 
end 
p result 

방법 # 2를 반환 열거

p [1, 2, 3].map do |num| 
    num * 2 
end 

방법 # 3을 반환 # 2의 Array

p [1, 2, 3].map {|num| num * 2} 

답변

0

를 돌려 열거자인 map의 반환 값을 p에 전달하고 있습니다. # 1, # 3에

[1, 2, 3].map #returns an enumerator

반환 값이 배열되도록 반면에, 사용자가 직접 map 블록으로 전달된다.

p ([1, 2, 3].map do |num| 
    num * 2 
end) # returns an array 

전체를 괄호로 묶으면 올바른 반환 값을 제공합니다.

관련 문제