프로퍼티(Property) Property의 정의 클래스나 구조체, 열거체의 객체 인스턴스가 그 내부에 가지고 있는 객체의 상태에 관한 정보를 말합니다(Properties associate values with a particular class, structure, or enumeration). 저장 프로퍼티는 상수나 변수를 인스턴스의 일부로서 저장하지만, 연산 프로퍼티는 저장한다기보다 값을 연산하는 프로퍼티입니다(Stored properties store constant and variable values as part of an instance, whereas computed properties calculate (rather than store) a value). 저장 프로퍼티는 클래스와 구조체에만..
열거형(enum) 제한된 선택지를 주고 싶을 때 정해진 값 외에는 입력받고 싶지 않을 때 예상된 입력 값이 한정되어 있을 때 각각의 케이스가 값으로 취급된다. C언어의 열거형에서는 정수값이 자동으로 할당되지만 Swift에서는 작동 방식이 다르다. Swift에서는 각 항목이 그 자체로 고유값이 될 수 있다. 처음 선언시에는 열거형을 명시해줄 필요가 있다. enum Weekday { case mon case tue case wed case thu, fri, sat, sun } var day: Weekday = Weekday.mon enum이 정수값을 가지면 rawValue를 생성해줄 수 있고 이 rawValue는 첫번째 case가 값이 정해지면 C언어처럼 1씩 증가한다. 1씩 증가하다가 중간에 중복되지 않는..
데이터 타입 고급 1. 데이터 타입 안심 데이터 타입 안심이란 데이터의 타입에서 오는 실수들을 줄일 수 있다는 말로서 Swift가 컴파일 시 타입을 확인하며 문제가 있을 경우 컴파일 오류로 알려준다. 타입 확인: 컴파일시 타입을 확인하는 과정을 타입 확인이라고 한다. 타입 추론: 특정 타입을 명시하지 않아도 컴파일러가 할당된 값을 기준으로 변수나 상수의 타입을 결정한다. 2. 타입 별칭(Type Alias) 존재하는 데이터 타입에 임의의 다른 이름(별칭)을 부여할 수 있으며 이를 타입 별칭이라고 한다. 기본으로 제공하는 데이터 타입(Int...), 사용자가 생성한 타입 모두 별칭 생성이 가능하다. typealias Number = Int typealias Count = Int let myMoney: Nu..
if let vs guard let (if let, guard let 차이 비교) 1. if-let optional 타입의 값이 nil인지 판단하고 nil이 아닐 경우 if 블럭 안에서 optional이 unwrapped 된 상태로 사용 가능하다. if-let을 사용할 때는 추출하려는 변수의 이름과 동일하게 사용해도 상관 없다. 2. guard-let guard 뒤에 조건이 true일 때 코드가 계속 실행되며 반드시 뒤에 else 구문이 필요하다. guard 뒤 조건이 false라면 else 블럭이 실행되며, 자신보다 상위 코드 블록을 종료하는 코드가 반드시 들어가야한다. (return, break, continue, throw) 옵셔널 바인딩으로 사용할 경우 guard 구문 실행 코드 아래부터 함수 블..
Swift Basic 조건문 If - else if - else 구문 if 만 단독으로 사용 가능 if 조건 뒤에는 Bool 타입 값만 존재해야함 조건 부분의 소괄호는 선택사항 switch 구문 정수타입의 값만 비교하는 것이 아니라 대부분의 스위프트 기본 타입을 지원 default 구문은 반드시 작성해야한다. 명시적으로 break를 하지 않아도 자동으로 case마다 break가 된다. fallthrough 키워드로 break를 무시할 수 있다. 쉼표(,)를 사용해서 하나의 case에 여러 패턴을 명시할 수 있다. let test: String = "test3" switch test { case "test1": print(1) case "test2": print(2) case "test", "test3":..
Swift Basic 명명법 / 콘솔로그 / 문자열 보간법 1. 명명법 Upper Camel Case: type(class, struct, enum, extension) 등 Lower Camel Case: 그 외(function method, variable, constant) 2. 콘솔로그 남기기 print 함수: 단순 문자열 출력 dump 함수: 자세한 설명까지 출력 3. 문자열 보간법(String Interpolation) - \(변수 또는 상수)를 문자열에 삽입하여 바로 출력 가능 상수와 변수 1. 상수와 변수 선언 let: 차후 변하지 않는 값(상수)를 선언할 때 사용 var: 차후 변하는 값(변수)를 선언할 때 사용 기본 데이터 타입 1. Bool true / false값을 가지는 값 2...
Convention General Conventions 시간복잡도가 O(1)이 아닌 것을 명시한다(Document the complexity of any computed property that is not O(1)) 사람들은 일반적으로 정보들을 기억하고 생각해내는데에 같은 시간이 걸리므로 특정 정보에 접근하는 것에 추가적인 시간이 들지 않는다고 생각한다. 이 때문에, 코드에서 Property에 접근하는 계산이 모두 O(1)으로 작동한다고 생각하기 쉬우며 O(1)이 아닐 경우 명시해줄 필요가 있다. free function보다 property와 method를 더 이용해야한다(Prefer methods and properties to free functions) free function: Swift에서는 ..
Naming(명명법) Promote Clear Usage 모호성을 피하기위해 모든 단어를 포함해라(Include all the words needed to avoid ambiguity) 위의 예시의 경우 remove의 parameter에서 at을 사용하지 않으면 명확하지 않다. x에서 제거하는 것인지, x를 제거하는 것인지 불분명하므로 명확히 표현해줘야한다. 반례에서 x가 position이 아니고 삭제하는 값 자체일 경우 label을 뭐라고 하는게 좋을까? ... label 없이 parameter로 value: x 로 표현해도 괜찮을 것 같다. 의미없는 단어를 생략하라(Omit needless words) 명확성을 위해 더 많은 단어가 사용되는 것은 좋지만, 너무 많은 단어와 정보는 생략되어야 한다. 위..
- Total
- Today
- Yesterday
- 배열합치기#분할정복#BOJ#Python
- API#lazy#
- 토마토#백준알고리즘#Python
- 반복수열#백준알고리즘#Python
- 종이자르기#분할정복#BOJ#Python
- Brackets#Stacks and Queues#Codility#Python
- 파이썬알고리즘인터뷰#4장
- 공유기 설치#BOJ#이분탐색#Python
- N으로 표현#DP#Programmers#Python
- 백준 알고리즘#BackTracking
- 텀 프로젝트#백준알고리즘#Python
- django#slicing
- Swift#Tuples#Range
- 순열사이클#BOJ#Python
- 랜선자르기#이분탐색#BOJ#Python
- 날짜 계산#BOJ#완전탐색#Python
- 미로 탐색#백준알고리즘#Python
- 암호코드#dp#BOJ#Python
- Triangle#Sorting#Codility#Python
- PassingCars#Codility#Python
- django
- Distinct#Codility#Python
- 터틀비치#리콘#xbox#controller
- filter#isalnum#lower
- 리모컨#완전탐색#BOJ#Python
- 병든 나이트#BOJ#탐욕법#Python
- 쿼드트리#BOJ#분할정복#Python
- 섬의개수#백준알고리즘#Python
- 나무자르기#BOJ#이분탐색#Python
- NumberofDiscIntersections#Codility#Sort#Python
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |