티스토리 뷰

Tech/Swift

스위프트 map , forEach

Ellie Kim 2018. 12. 22. 00:00

배열을 변환해야 할 때 맵을 많이 사용합니다.



map은 매개변수로 전달된 함수를 실행하고 실행된 배열을 반환해주는 함수입니다. 


배열 , 딕셔너리, 세트 등에서 map을 사용할 수 있습니다.



공식 문서를 살펴보면

func map<T>(_ transform: (Element) throws -> T) rethrows -> [T]

여기서 transform 은 매핑클로저로 시퀀스의 요소를 매개변수로 받아들이고 동일하거나 다른 유형의 변환된 값을 반환합니다.



let cast = ["Vivien", "Marlon", "Kim", "Karl"]
let lowercaseNames = cast.map { $0.lowercased() }



예제를 살펴보면 cast는 [String]으로 이루어져 있습니다.


cast.map { $0.lowercased() }를 하게되면 $0 각 요소에 대해서 소문자로 변경해줍니다.


lowecaseNames에는 변경된 배열을 리턴받게 됩니다 







사실 mapforEach의 차이점이 궁금했습니다.


forEach는 for-in루프와 같은 순서로 각 요소의 클로즈를 호출해 사실상 map과 동일한 역할을 하는것 같은데


차이점을 살펴보니 map은 변경된 배열 값을 리턴해주고 forEach는 리턴하는 값이 없습니다.


그렇기 때문에 map 연달아 작업을 할수있으며 forEach는 리턴하는 값이 없기 때문에 연달아 다른 작업을 할 수 없습니다.


예를들어


let numbers = [1,2,3,4]


let num = numbers.map ({ $0 }) 뒤에 .map, filter 등 연달아서 작업 가능 



map은 값을 변경하기 위해 사용하고 forEach는 리턴 값 필요없이 각 요소에 주어진 클로저를 호출할 때 사용하면 좋을것 같습니다.







 





'Tech > Swift' 카테고리의 다른 글

Swift functions abs,assert,assertionFailure  (0) 2019.03.07
Swift - Array shuffle()  (2) 2019.02.13
스위프트 removeAll과 filter비교  (0) 2019.01.10
스위프트 zip 사용하기  (0) 2019.01.02
스위프트 오버로드 오버라이딩  (0) 2018.12.19
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함