일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 두근두근 자료구조
- 큐
- 암호수학
- OSI
- C
- HTML
- 시간복잡도
- 정렬 알고리즘
- Stack
- ftz level13
- 백준
- 자료구조
- System
- windosw 문자열
- pwnable.kr
- SWiFT
- PHP
- c언어
- LoB
- 재귀
- Java
- web
- 스택
- War Game
- 파이썬
- 파일 시스템
- 미로 탐색 알고리즘
- windosws wbcs
- level13
- ftz
- Today
- Total
목록Programming/Swift (30)
나의 기록, 현진록
스위프트 프로그래밍 3판 - 야곰 지음 15.2 필터 필터는 말 그대로 컨테이너 내부의 값을 걸러서 추출하는 역할을 하는 고차함수입니다. 맵과 마찬가지로 새로운 컨테이너에 값을 담아 반환해줍니다. 다만 맵처럼 기존 콘텐츠를 변형하는 것이 아니라, 특정 조건에 맞게 걸러내는 역할을 할 수 있다는 점이 다릅니다. filter 함수의 매개변수로 전달되는 함수의 반환 타입은 Bool입니다. 해당 콘텐츠의 값을 갖고 새로운 컨테이너에 포함될 항목이라고 판단하면 ture를, 포함하지 않으려면 false를 반환해주면 됩니다. let numbers = [0,1,2,3,4,5] let evenNumbers = numbers.filter{(number: Int) -> Bool in return number % 2 == 0..
스위프트 프로그래밍 3판 - 야곰 지음 스위프트는 함수를 일급 객체로 취급합니다. 따라서 함수를 다른 함수의 전달인자로 사용할 수 있습니다. 매개변수로 함수를 갖는 함수를 고차함수라고 부르는데, 스위프트에 유용한 대표적인 고차함수로는 맵 필터 리듀스 등이 있습니다. 이번 장에서는 맵, 필터, 리듀스를 통해 데이터의 연산을 쉽게 실행하는 방법을 알아보겠습니다. 15.1 맵 맵은 자신을 호출할 때 매개변수로 전달된 함수를 실행하여 그 결과를 다시 반환해주는 함수입니다. 스위프트에서 맵은 배열, 딕셔너리, 세트, 옵셔널 등에서 사용할 수 있습니다. 조금 더 정확히 말하자면 스위프트의 Sequence, Collection 프로토콜을 따르는 타입과 옵셔널은 모두 맵을 사용할 수 있습니다. 맵을 사용하면 컨테이너가..
스위프트 프로그래밍 3판 - 야곰 지음 14.2 빠른 종료 빠른 종료의 핵심 키워드는 guard이다. guard 구문은 if 구문과 유사하게 Bool 타입의 값으로 동작하는 기능입니다. guard 뒤에 따라붙는 코드의 실행 결과가 true일 때 코드가 계속 실행됩니다. if 구문과는 다르게 guard 구문은 항상 else 구문이 뒤에 따라와야 합니다. 만약 guard 뒤에 따라오는 Bool 값잉 false라면 else의 블록 내부 코드를 실행하게 되는데, 이때 else 구문의 블록 내부에는 꼭 자신보다 상위의 코드 블록을 종료하는 코드가 들어가게 됩니다. 그래서 특정 조건에 부합하지 않다는 판단이 되면 재빠르게 코드 블록의 실행을 종료할 수 있습니다. 이렇게 현재의 코드 블록을 종료할 때는 return,..
스위프트 프로그래밍 3판 - 야곰 지음 14.1 옵셔널 체이닝 옵셔널 체이닝은 옵셔널에 속해 있는 nil일지도 모르는 프로퍼티, 메서드, 서브스크립션 등을 가져오거나 호출할 때 사용할 수 있는 일련의 과정입니다. 옵셔널에 값이 있다면 프로퍼티, 메서드, 서브스크립트 등을 호출할 수 있고, 옵셔널이 nil이라면 프로퍼티, 메서드, 서브스크립트 등은 nil을 반환합니다. 즉, 옵셔널을 반복 사용하여 옵셔널이 자전거 체인처럼 서로 꼬리를 물고 있는 모양이기 때문에 옵셔널 체이닝이라고 부릅니다. 자전거 체인에서 한 칸이라도 없거나 고장 나면 체인 전체가 동작하지 않듯이 중첩된 옵셔널 중 하나라도 값이 존재하지 않는다면 결과적으로 nil을 반환합니다. 옵셔널 체이닝은 프로퍼티나 메서드 또는 서브스크립트를 호출하고..
GitHub - dbguswls030/Argorithm Contribute to dbguswls030/Argorithm development by creating an account on GitHub. github.com 20300번 - 서강근육맨 성공출처 시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율 1 초 (추가 시간 없음) 1024 MB 913 341 293 36.809% 문제 로니 콜먼 동영상을 보고 보디빌더가 되기로 결심한 향빈이는 PT 상담을 받으러 서강헬스클럽에 갔다. 향빈이가 서강헬스클럽을 선택한 이유는 PT를 받을 때 사용하는 운동기구를 회원이 선택할 수 있다는 점 때문이다. 하지만, 서강헬스클럽은 항상 사람이 많아서 PT를 한 번 받을 때 운동기구를 최대 두 개까지만 선택할 수..
스위프트 프로그래밍 3판 - 야곰 지음 13.4 값 획득 클로저는 자신이 정의된 위치의 주변 문맥을 통해 상수나 변수를 획득할 수 있습니다. 주변에 정의한 상수나 변수가 더 이상 존재하지 않더라도 값 획득을 통해 해당 상수나 변수의 값을 자신 내부에서 참조하거나 수정할 수 있습니다. 이 이야기를 하는 이유는 클로저가 비동기 작업에 많이 사용되기 때문입니다. 클로저를 통해 비동기 콜백을 작성하는 경우, 현재 상태를 미리 획득해두지 않으면, 실제로 클로저의 기능을 실행하는 순간에는 주변의 상수나 변수가 메모리에 미리 존재하지 않는 경우가 발생합니다. 중첩 함수도 하나의 클로저 형태라고 앞에서 설명했는데, 이 중첩 함수 주변의 변수나 상수를 획득해 놓을 수도 있습니다. 즉, 자신을 포함하는 지역변수나 지역상수..
스위프트 프로그래밍 3판 - 야곰 지음 13.3.1 문맥을 이용한 타입 유추 메서드의 전달인자로 전달하는 클로저는 메서드에서 요구하는 형태로 전달해야 합니다. 즉, 매개변수의 타입이나 개수, 반환 타입 등이 같아야 전달인자로서 전달할 수 있습니다. 이를 다르게 말하면, 전달인자로 전달할 클로즈는 이미 적합한 타입을 준수하고 있다고 유추할 수 있습니다. 문맥에 따라 적절히 타입을 유추하는 것입니다. 그래서 전달인자로 전달하는 클로저를 구현할 때는 매개변수의 타입이나 반환 값의 타입을 굳이 표현해주지 않고 생략하더라도 문제가 없습니다. let names: [String] = ["wizplan", "eric", "hyunjin", "jenny"] //클로저의 매개변수 타입과 반환 타입을 생략하여 표현할 수 있..
스위프트 프로그래밍 3판 - 야곰 지음 스위프트에서 함수형 프로그래밍 패러다임을 접할 때 첫걸음으로 꼭 알아야 할 녀석이다. 클로저를 이해해야 스위프트 함수형 프로그래밍 패러다임 스타일을 좀 더 명확하게 이해할 수 있습니다. 클로저는 일정 기능을 하는 코드를 하나의 블록으로 모아놓은 것을 말합니다. 뭔가 함수랑 비슷하다고 느껴지면 맞다. 사실 함수는 클로저의 한 형태입니다. 클로저는 변수나 상수가 선언된 위치에서 참조를 획득하고 저장할 수 있습니다. 이를 변수나 상수의 클로징이라고 하며 클로저는 여기서 착안된 이름입니다. 클로저의 세 가지 형태가 있습니다. 이름이 있으면서 어떤 값도 획득하지 않는 전역함수의 형태 이름이 있으면서 다른 함수 내부의 값을 획득할 수 있는 중첩된 함수의 형태 이름이 없고 주변..
스위프트 프로그래밍 3판 - 야곰 지음 11.2 인스턴스 소멸 클래스의 인스턴스는 디이니셜라이저를 구현할 수 있습니다. 디이니셜라이저는 이니셜라이저와 반대 역할을 합니다. 즉, 메모리에서 해제되기 직전 클래스 인스턴스와 관련하여 원하는 정리 작업을 구현할 수 있습니다. 디이니셜라이저는 클래스의 인스턴스가 메모리에서 소멸되기 바로 직전에 호출됩니다. deinit 키워드를 사용하여 디이니셜라이저를 구현하면 자동으로 호출됩니다. 디이니셜라이저는 클래스의 인스턴스에만 구현할 수 있습니다. 스위프트는 인스턴스가 더 이상 필요하지 않으면 자동으로 메모리에서 소멸시킵니다. 만약 인스턴스 내부에서 파일을 불러와 열어보는 등의 외부 자원을 사용했다면 인스턴스를 소멸하기 직전에 파일을 다시 저장하고 닫아주는 등의 부가 작..
스위프트 프로그래밍 3판 - 야곰 지음 11.1.5 기본 이니셜라이저와 멤버와이즈 이니셜라이저 사용자 정의 이니셜라이저를 정의해주지 않으면 클래스나 구조체는 모든 프로퍼티에 기본값이 지정되어 있다는 전제하에 기본 이니셜라이저를 사용합니다. 기본 이니셜라이저는 프로퍼티 기본값으로 프로퍼티를 초기화해서 인스턴스를 생성합니다. 즉, 기본 이니셜라이저는 저장 프로퍼티의 기본값이 모두 지정되어 있고, 동시에 사용자 정의 이니셜라이져가 정의되어 있지 않은 상태에서 제공됩니다. 저장 프로퍼티를 선언할 때 기본값을 지정해주지 않으면 이니셜라이저에서 초깃값을 설정해야 합니다. 그러나, 프로퍼티 하나 때문에 매번 이니셜라이저를 추가하거나 변경하는 일은 여간 귀찮은 일이 아닙니다. 때문에 구조체는 사용자 정의 이니셜라이저를..