You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
// Declarationfunc map<U>(transform:(T)->U)->Array<U>[x1, x2,... xn].map(f)->[f(x1), f(x2),..., f(xn)]// transform을 지원하는 클로저는 변경된 값을 반환하기 위해 해당 타입의 값을 반환해야 합니다.// 다음은 [1, 2, 3, 4]인 배열에서 2씩 곱한 배열을 얻는 예제입니다.letarray=[0,1,2,3]letmultipliedArray= array.map({(value:Int)->Intinreturn value *2})// [2, 4, 6, 8]// map에서도 추론하여 코드를 생략할 수 있습니다. 우선, value의 타입 Int와 return 키워드는 추론을 통해 생략 가능합니다.
array.map({(value)->Intin value *2})// -> Int도 생략 가능합니다.
array.map({value in value *2})// value는 여러번 사용하므로 $0으로 축약할 수 있습니다.
array.map({$0 *2})// 또한, 괄호도 생략 가능합니다.
array.map{ $0 *2}// 만약 값에 문자열 “Number : “를 붙인다면 다음과 같이 사용할 수 있습니다.
array.map{"Number : \($0)"}
✅ filter
주어진 술어를 만족하는 시퀀스의 요소를 순서대로 포함하는 배열을 반환
클로저로 각 항목들을 비교하여 일치하는 결과물을 가진 새로운 배열을 반환합니다.
func filter(_ isIncluded:(Self.Element)throws->Bool)rethrows->[Self.Element]// * isIncluded를 allow(만족)하는 요소들의 집합을 return한다.
✅ reduce
주어진 클로저를 사용하여 시퀀스의 요소를 결합한 결과를 반환합니다.
배열의 각 항목들을 재귀적으로 클로저를 적용시켜 하나의 값을 만듭니다.
연산자는 중위 연산자로 왼쪽 값이 $0, 오른쪽 값이 $1임을 추론 가능하므로 다음과 같이 생략 가능합니다.
array.reduce( 0, + )
시간복잡도: O(n), where n is the length of the sequence.
// Declarationfunc reduce<U>(initial:U, combine:(U,T)->U)->U
array.reduce(0,{(s1: Int, s2: Int)-> Int in
return s1 + s2
})// 클로저는 함수의 마지막에 위치하면 다른 인자와 분리하여 작성할 수 있습니다.
array.reduce(0){(s1:Int, s2:Int)->Intinreturn s1 + s2
}// 위 코드에서 s1, s2의 타입은 추론하므로 생략 가능합니다.
array.reduce(0){(s1, s2)in s1 + s2 }// s1과 s2는 $0, $1로 대신하여 사용할 수 있습니다.
array.reduce(0){ $0 + $1 }
📌 TODO
없는 숫자 더하기
💬 Idea
소요시간
: 4분 30초💬 더 나은 방법?
fullNumberList를 배열로 만들지 않고 for문에서 0…9의 제한사항을 두는 것
→ 메모리 효율성 측면에서나, 코드의 간결함 측면에서나 더 나은 것 같다는 생각이 들었다.
0부터 9까지 숫자 중에서 numbers에 포함되지 않은 숫자들을 filter로 거르고, 걸러진 숫자를 reduce로 더하는 것
💬 알게된 문법
✅ contains
시퀀스에 지정된 요소가 포함되어 있는지에 대한 여부를 나타내는 bool 값을 반환
✅ map
클로저로 각 항목들을 반영한 결과물을 가진 새로운 배열을 반환합니다.
✅ filter
주어진 술어를 만족하는 시퀀스의 요소를 순서대로 포함하는 배열을 반환
클로저로 각 항목들을 비교하여 일치하는 결과물을 가진 새로운 배열을 반환합니다.
✅ reduce
주어진 클로저를 사용하여 시퀀스의 요소를 결합한 결과를 반환합니다.
배열의 각 항목들을 재귀적으로 클로저를 적용시켜 하나의 값을 만듭니다.
연산자는 중위 연산자로 왼쪽 값이 $0, 오른쪽 값이 $1임을 추론 가능하므로 다음과 같이 생략 가능합니다.
array.reduce( 0, + )
시간복잡도: O(n), where n is the length of the sequence.
✅ subtract
해당 set에서 주어진 set의 요소를 제거합니다. → String 배열에 적합
배열의 공통 요소를 제거할 때 유용함
✅ ClosedRange
하한에서 상한까지의 간격
닫힌 범위 연산자 (…)를 사용하여 ClosedRange 인스턴스를 만들 수 있음
The text was updated successfully, but these errors were encountered: