switch 는 암시적인 진행을 사용하지 않는다! (No Implicit Fallthrough) Swift 에서는 break 를 적지 않아도, 특정 case 가 완료되면 자동으로 switch 구문을 빠져 나오게 된다. 이런 사용법으로 인해 실수로 break 를 적지않아 의도하지 않은 case 문이 실행되는 것을 방지한다. break 가 Swift에서 필수는 아니지만, case 안에 특정 지점에서 멈추도록 하기 위해 break 를 사용할 수 있다. switch 문의 특징 1. case 안에는 최소 하나의 실행 구문이 있어야 한다. let anotherCharacter: Character = "a" switch anotherCharacter { case "a": // Invalid, case문에 body가 ..
iOS/문법
객체 지향 프로그래밍에서의 배열 구조체 // 선언만 한 경우 var words: [String] words 라는 배열 구조체는 메모리 공간을 차지하지 않고 있다. // 초기화 수행 words = [String]() 초기화가 진행되면 메모리 공간을 할당 받는다.
guard 구문과 if 구문 guard 구문은 if 구문과 마찬가지로 주어진 표현식의 결과가 참인지 거짓인지에 따라 구문의 실행 여부를 결정짓는 방식의 조건문이다. 하지만 guard 구문에는 else 블록이 필수이지만, 표현식의 결과가 참일 때 실행되는 블록이 없다. 특정 조건을 만족하지 않은 채로 후속 코드를 실행하면 심각한 오류가 발생할 경우에 전체 구문을 조기 종료(Early Exit) 하기 위한 목적으로 사용된다. if 로도 충분히 구현이 가능한데 왜 굳이 guard 라는 문법을 만들었고, 이를 사용할까? guard 구문은 본래 실행 흐름을 종료하기 위한 목적으로 사용되는 구문이기 때문에, 코드를 중첩해서 사용하지 않아도 된다는 장점이 있다. guard 문을 많이 사용해도 코드의 깊이가 깊어지지 ..
Swift 에서는 콜렉션 타입으로 Array, Set, Dictionary 세가지를 지원합니다. Array 빈 배열 생성 var words = [String]() 배열 아이템 동적 추가 ① append(_:) words.append("star") 입력된 값을 배열의 맨 뒤에 추가. 데이터 추가 이전에 배열의 크기를 +1 만큼 확장한 후, 마지막 인덱스 위치에 추가합니다. ② insert(_:at:) shoppingList.insert("추가할 내용", at: 0) 원하는 위치에 직접 추가하고 싶을 때 사용하는 메서드입니다. ③ append(contentsOf:) words.append(contentsOf: ["word1", "word2", "word3"]) 배열의 마지막에 아이템을 추가하지만, 개별 아이..
Swift 에서 String 은 값 타입이다.(Value Type) 따라서 String 이 다른 함수 혹은 메서드로부터 생성되면, String 이 할당될 때 이전 String 의 Reference 를 할당하는 것이 아니라 값을 복사하여 생성한다. 여러 줄의 문자열을 사용하고자 하는 경우 let quotation = """ The White Rabbit put on his spectacles. "Where shall I begin, please your Majesty?" he asked. "Begin at the beginning," the King said gravely, "and go on till you come to the end; then stop." """ 접두사 & 접미사 비교 hasPrefi..
할당 연산자 Tuple 을 이용하여 여러 값을 한번에 할당한다. let (x, y) = (2, 3) nil 병합 연산자 a ?? b 형태를 갖는 연산자로 Optional a 를 벗겨서(unwraps) 만약 a가 nil인 경우 b를 반환한다. a != nil ? a! : b 단방향 범위 (One-Side Ranges) [a..] [..a] 위와 같은 형태로 시작 혹은 끝만 지정하여 사용하는 범위 연산자이다. for word in wordList[2...] 아래와 같이 특정 값을 포함하는지 여부를 판단하는 경우에도 사용된다. let range = ...5 range.contains(7) // false range.contains(-1) // true