Computer >> 컴퓨터 >  >> 프로그램 작성 >> Ruby

Ruby Map 방법 사용 방법(예제 포함)

Map은 Arrays, Hashes &Ranges와 함께 사용할 수 있는 Ruby 메서드입니다.

지도의 주요 용도는 데이터를 변환하는 것입니다.

예를 들어 :

문자열 배열이 주어지면 모든 문자열을 살펴보고 모든 문자를 대문자로 만들 수 있습니다.

또는 User 목록이 있는 경우 개체...

변환할 수 있습니다. 해당 이메일 주소, 전화번호 또는 기타 속성 목록에 추가 User에 정의됨 수업.

정확히 어떻게 하는지 봅시다!

루비 맵 구문

map 구문은 다음과 같습니다.

array = ["a", "b", "c"]

array.map { |string| string.upcase }

# ["A", "B", "C"]

먼저 배열이 있지만 해시 또는 범위일 수도 있습니다.

그런 다음 map을 호출합니다. 블록으로.

블록은 대괄호 { ... } 사이에 있는 것입니다. . 블록 내에서 배열의 모든 요소를 ​​변환하는 방법을 말합니다. 기본적으로 기능입니다.

map을 호출한 후 일어나는 일 ?

지도는 새 배열을 반환합니다. 결과와 함께.

원본은 변경되지 않습니다.

원래 배열을 변경하려면 map!을 사용할 수 있습니다. .

루비 맵의 예

다음은 유용할 수 있는 몇 가지 예입니다.

숫자 2배 :

array = [1,2,3]

array.map { |n| n * 2 }
# [2, 4, 6]

문자열을 정수로 변환 :

array = ["11", "21", "5"]

array.map { |str| str.to_i }
# [11, 21, 5]

해시 값을 기호로 변환 :

hash = { bacon: "protein", apple: "fruit" }

hash.map { |k,v| [k, v.to_sym] }.to_h
# {:bacon=>:protein, :apple=>:fruit}

이 해시 예제 정보:

해시 요소가 키와 값으로 구성되어 있기 때문에 하나가 아닌 두 개의 인수가 있음을 알 수 있습니다.

그런 다음 변환된 키와 값이 포함된 새 배열을 반환합니다.

마지막 단계는 이것을 다시 해시로 변환하는 것입니다.

루비 지도 대 각각

지도와 각각의 차이점은 무엇인가요?

각각은 더 원시적인 버전의 지도와 같습니다. …

작업할 수 있도록 모든 요소를 ​​제공하지만 결과를 수집하지는 않습니다.

항상 변경되지 않은 원래 개체를 반환 .

지도는 동일한 작업을 수행하지만...

변환된 요소가 있는 새 배열을 반환합니다.

:

array.each { |n| n * 2 }
# [1, 2, 3]

array.map { |n| n * 2 }
# [2, 4, 6]

루비 지도 대 수집

지도와 수집은 완전히 같은 방법입니다.

같은 물건에 다른 이름입니다!

어떤 것을 사용해야 하나요?

오픈 소스 프로젝트를 읽으면 가장 일반적인 버전이 map임을 알 수 있습니다. .

그것을 사용하십시오.

색인과 함께 지도를 사용하는 방법

값이 포함된 색인이 필요한 경우 with_index를 사용할 수 있습니다. 방법.

예시 :

array = %w(a b c)

array.map.with_index { |ch, idx| [ch, idx] }

# [["a", 0], ["b", 1], ["c", 2]]

보너스 팁 :

with_index에 매개변수를 전달할 수 있습니다. 인덱스 0에서 시작하지 않으려면

루비 지도 속기(지도 및)

map의 축약형 버전을 사용할 수 있습니다. 인수가 필요 없는 메서드를 호출할 때 .

:

["11", "21", "5"].map(&:to_i)

:

["orange", "apple", "banana"].map(&:class)

이 &구문은 map에 국한되지 않습니다. , 다른 열거 가능한 메서드와 함께 사용할 수도 있습니다.

지도 방법 마인드맵

Ruby Map 방법 사용 방법(예제 포함)

동영상 튜토리얼

요약

Ruby 맵 방법과 사용 방법에 대해 배웠습니다! 또한 각각, 지도 및 수집의 차이점에 대해서도 배웠습니다.

이 기사가 마음에 드시면 Ruby 친구들과 공유해 주세요 🙂

읽어주셔서 감사합니다!