안녕하세요.
오늘 발표할 주제는 Swift 언어의 장점 중 하나인 Expressive,
더 나은 표현성 이라는 주제입니다.
Swift 언어는 간결한 문법을 제공합니다.
간결한 문법이 무슨 의미일까요 ?
말이 애매하니 Swift에만 있는 특별한 문법인 클로저를 깊이 있게 다뤄보려고 합니다.
여기 보이는 사진의 구조를 클로저라고 합니다.
우선 클로저는 넓은 범위의 의미로 코드 블럭을 뜻합니다.
코드블럭이란 대부분의 언어에서 중괄호로 표현하거나, 파이썬의 경우 들여쓰기로 코드를 나타내는 뭉치입니다.
클로저의 구조는 람다 표현식과 비슷합니다.
왼쪽의 함수를 보면 인자에 10을 더하는 함수입니다.
이를 람다 표현식으로 바꾸면 이렇게 바꿀수 있고 이는 Swift의 클로저와 비슷한 구조입니다.
클로저 표현 문법을 알아봅시다.
backward함수를 자세히 살펴보면 문자열의 사전값을 비교하여 참과 거짓을 리턴시키는 함수입니다.
swift의 기본 제공함수인 sorted 함수의 by 인자값은 클로저를 인자로 받습니다.
그래서 sorted 함수에 backward 함수를 집어넣으면 배열을 사전 순으로 정렬할 수 있습니다.
하지만, 이를 클로저로도 표현가능합니다.
아래의 사진처럼 함수를 생략하고 중괄호의 코드 뭉치로 표현하면 위와 같은 동작을 합니다.
더 짧게 줄일 수 있습니다.
우선 names 배열이 문자열 배열이므로 인자값은 당연히 문자열일 것입니다.
swift 언어는 타입 추론을 통하여 인자를 생략할 수 있습니다.
아래와 같이 표현할 수 있습니다.
조금 더 줄일 수 있습니다. 해당 클로저의 리턴값은 당연히 존재해야하므로 리턴을 생략할 수 있습니다.
클로저는 연산자 메소드를 사용하여 조금 더 줄일 수 있습니다. 이제 더는 못 줄입니다.
클로저는 연산자 메소드를 사용하여 조금 더 줄일 수 있습니다. 이제 더는 못 줄입니다.