Skip to content

JuhoJUNG-Kr/swift-starter-week2

 
 

Repository files navigation

코드 스타터 캠프 2주차 미션을 위한 저장소입니다.

고차함수

  • 매개변수로 함수를 받는 함수이다.
  • 모두 컨테이너(Array, Set, Dictionary)와 옵셔널 타입에서 사용 가능하다.

즉 매개변수로 받은 함수를 실행해서 그 결과 값을 다시 반환해 주는 함수이다. 이렇게 보면 사실 for-in문과 별 다를게 없지만 왜 Map 메서드를 사용하는지 알아보았다.

-코드가 간결하다

  • 코드의 재사용이나 컴파일러의 최적화에 유리하다
  • 예측치 못한 결과가 발생하는 현상을 막을 수 있다.

Map 메서드

제공된 클로저를 각 항목에 적용한 후, 원래의 순서와 같도록 배치 한 뒤 반환하는 메소드. 기존 데이터를 변형하여 새로운 컨테이너를 생성하는 것.

기본형태

let something = anything.map({(number: Int) -> Int in return number * 2 })

하지만 많이 생략이 가능하다. map({ (number : Int) -> Int in number * 2 }) //return 생략. 단, 클로저 내부의 코드가 두 줄 이상이라면 return을 생략할 수 없다

map({ (number) -> Int in number * 2 }) //원 타입 생략

map({ (number) -> in number * 2 }) //반환 타입 생략

map({ $0 * 2 }) //매개변수 생략. 이때 $0은 1번째 매개변수라는 의미

map{ $0 * 2 } //후행 클로저. 괄호 생략 후 클로저만 뒤따르게 된다.

전역변수와 지역변수

이 둘의 차이점은 간단하다 '전역변수' 말 그대로의 '전역' 즉 함수 밖에서 선언하여 어디에서든지 접근 가능한 변수이다. '지역변수' 즉 함수 내에서 선언하며 블록 내에서만 접근 가능한 변수이다. 단 지역변수는 선언한 위치에 따라 사용할 수 있는 범위(scope)가 달라진다.

전역변수는 편리하고 어디에서든 끌어와 쓸 수 있지만 문제는, 간단한 코드에는 상관이 없지만 코드 줄이 몇 백 줄 몇 천 줄 이상 넘어갈 경우 혼동이 올 수 있기 때문에 사용하는 것을 지양하는 편이다 또 지역변수는 함수가 끝나거나 코드의 블록을 벗어나면 메모리가 삭제되지만 전역변수는 계속 남아있기 때문에 메모리를 낭비할 수 있다.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Swift 100.0%