SWIFT 17

[SWIFT] 프로퍼티( 프로퍼티 옵저버 ) ★★★

1. 개요 프로퍼티는 클래스, 구조체 또는 열거형 등에 관련된 값(속성)을 뜻한다. 저장(Stored), 연산(Computed), 타입 프로퍼티로 나눈다. 연산 프로퍼티 : 특정 타입의 인스턴스에서 특정 연산을 실행한 결과값을 의미 (구조체, 클래스, 열거형에서 사용) 프로퍼티 옵저버 기능은 전역변수와 지역변수 모두에서 이용 가능 * 프로퍼티의 값이 변하는 것을 감시하는 프로퍼티 감시자(Property Observers)도 있다. 2. 프로퍼티 감시자 (Property Observers) willSet 매서드 : 값이 저장되기 바로 직전에 호출 됨 didSet 매서드 : 새 값이 저장되고 난 직후에 호출 됨 willSet에서는 새 값의 파라미터명을 지정할 수 있는데, 지정하지 않으면 기본 값으로 newV..

공부/SWIFT 2021.03.11

[SWIFT] 프로퍼티( 연산 프로퍼티 ) ★★★

1. 개요 프로퍼티는 클래스, 구조체 또는 열거형 등에 관련된 값(속성)을 뜻한다. 저장(Stored), 연산(Computed), 타입 프로퍼티로 나눈다. 연산 프로퍼티 : 특정 타입의 인스턴스에서 특정 연산을 실행한 결과값을 의미 (구조체, 클래스, 열거형에서 사용) 연산 프로퍼티는 전역변수와 지역변수 모두에서 이용 가능 * 전역 상수와 변수는 지연 저장 프로퍼티(Lazy Stored Properties)와 같이 지연 계산(lazy computed) 됩니다. 즉, 호출되는 즉시 연산이 이루어진다는 것. 하지만 지연 저장 프로퍼티(지역변수라 생각하면됨)와 다르게 lazy 키워드를 붙일 필요 없습니다. 반면 지역 상수와 변수는 지연 계산될 수 없습니다. 그러므로 지연시킬시 lazy 키워드를 붙입니다. * ..

공부/SWIFT 2021.03.11

[SWIFT] 함수(종료되지 않는 함수, 반환값을 무시할 수 있는 함수)

1. 종료되지 않는 함수 Never : 너 치명적인 오류다 보고하고 종료한다. 키워드 Never 종료되지 않는다 = 정상적으로 끝나지 않는 함수이다. = 비 반환 함수(Nonreturning fucntion) = 비번 환 메서드(Nonereturning method) 이 함수를 실행한다는 의미는 프로세스의 동작은 종료되는 것을 의미한다. 비반호나 함수 안에서는 오류를 던진다든가 , 중대한 시스템 오류를 보고하는 등의 일을 하고 프로세스를 종료하는 일을 한다. 비 반환 함수는 어디서든 호출이 가능하다 guard구문의 else 블록에서도 호출할 수 있다. func carshAndBurn() -> Never { fatalError("Something Error") } crashAndBurn() //프로세스 종..

공부/SWIFT 2021.03.11

[SWIFT] 함수(함수는 일급객체이다.)

함수의 기본개념 알아보러 가기 : 2021.03.10 - [공부/SWIFT] - [SWIFT] 함수 javascript와 마찬가지로 스위프트의 함수도 일급객체이다.(first-class object) 다른 데이터 타입과 마찬기지로 변수에 할당이 될 수 있고 함수의 인자(매개변수)로 전달이되며 return값으로 반환 할 수 있다. 함수타입으로 사용 할 수 있다.(함수타입을 작성할땐 전달인자 레이블 사용불가) ( 매개변수 타입 ) -> 반환타입 //함수타입으로의 사용 //두개의 Int를받아 Int를 반환하는 함수면 해당 함수타입을 사용가능 typealias CalculateTwoInt = ( Int, Int ) -> Int //함수타입 작성시 전달인자 레이블을 작성할 수 없다. //오류 let someFun..

공부/SWIFT 2021.03.10

[SWIFT] 함수(기본, 다양한 함수선언)

1.개요 메서드 : 구조체, 클래스, 열거형 등 특정 타입에 연관되어 사용하는 함수 함수 : 모듈 전체에서 전역적으로 사용할 수 있는 함수 스위프트는 재정의(오버라이드)와 중복정의(오버라이딩)를 모두 지원 함수는 일급객체이므로 하나의 데이터 타입으로 사용 될수 있다. * 함수의 축약표현 helloWorld( name: String, times: Int ) -> String 이라는 함수가 있으면 helloWorld(name:times:) 라고 표현을 한다. 2. 함수 정의 함수를 선언할 때는 가장 앞에 func 키워드를 붙이고 (person: String) 파라미터와 형 그리고 -> String 형태로 반환형을 정의합니다. func 함수이름(매개변수...) -> 반환타입 { 실행구문 return 반환 값 ..

공부/SWIFT 2021.03.10

[SWIFT] 제어 전송 구문(continue, break, fallthrough)

제어 전송 구문은 코드의 진행을 계속 할지 말지를 결정하거나, 실행되는 코드의 흐름을 바꾸기 위해 사용합니다 1. continue continue문은 현재 loop를 중지하고 다음 loop를 수행 let puzzleInput = "great minds think alike" var puzzleOutput = "" let charactersToRemove: [Character] = ["a", "e", "i", "o", "u", " "] for character in puzzleInput { if charactersToRemove.contains(character) { continue } else { puzzleOutput.append(character) } } print(puzzleOutput) // Pr..

카테고리 없음 2021.03.10

[SWIFT] 제어문( 반복문 while, repeat-while )

1. 개요 특정 조건문은 Bool 타입 이어야한다. repeat-while은 다른언어에서 do-while 문이라고 보면된다.( 무조건 한번은 실행시킨다. ) continue(다음으로 pass), break(중지)로 흐름제어가 가능하다. 2. while 조건(condition)이 거짓(false)일때까지 구문(statements)을 반복 var square = 0 var diceRoll = 0 while square < finalSquare { // roll the dice diceRoll += 1 if diceRoll == 7 { diceRoll = 1 } // move by the rolled amount square += diceRoll if square < board.count { // if we'..

공부/SWIFT 2021.03.10

[SWIFT] 제어문( 반복문 for-in )

1. for-in for-in문는 배열, 숫자, 문자열을 순서대로 순회(iterate)하기 위해 사용합니다. let names = ["Anna", "Alex", "Brian", "Jack"] for name in names { print("Hello, \(name)!") } // Hello, Anna! // Hello, Alex! // Hello, Brian! // Hello, Jack! 숫자 범위를 지정해 순회 for index in 1...5 { print("\(index) times 5 is \(index * 5)") } // 1 times 5 is 5 // 2 times 5 is 10 // 3 times 5 is 15 // 4 times 5 is 20 // 5 times 5 is 25 dictio..

공부/SWIFT 2021.03.10

[SWIFT] 제어문(조건문 if , switch)

스위프트의 흐름 제어 구문에서는 소괄호()를 대부분 생략 가능 중괄호{}는 생략 불가 1. 조건문 1.1 if문 if 구문의 조건의 값이 꼭 Bool 타입이여야 합니다. temperatureInFahrenheit = 90 if temperatureInFahrenheit = 86 { print("It's really warm. Don't forget to wear sunscreen.") } else { print("It's not that cold. Wear a t-shirt.") } // Prints "It's really warm. Don't forget to wear sunscreen." 1.2 switch 구문 break 키워드는 선택 사항이다. 안써도되고 가시성을 위해 써도 좋다. 다른 언어는 b..

공부/SWIFT 2021.03.10

[SWIFT] 열거형 (enum)

1. 개요 - 연관된 항목들을 묶어서 표현할 수 있는 타입 - 프로그래머가 정의해준 항목 값 외에는 추가/수정이 불가 - 제한된 선택지를 주고 싶을 때, 정해진 값 외에는 입력받고 싶지 않을 때, 예상된 입력 값이 한정되어 있을 때 사용 - 스위프트의 열거형은 각 열거형이 고유의 타입으로 인정되기 때문에 실수로 버그가 일어날 가능성을 원천 봉쇄할 수 있습니다. - 열거형은 switch구문과 만났을때 활용이 좋다. * 옵셔널(Optional)은 enum(열거형)으로 구성되어있다. 2. 선언 enum으로 선언 할 수 있다. 원시값을 가질 수 있다. // 열거명:타입 Int { switch expression { case let .number(value): return value case let .additi..

공부/SWIFT 2021.03.09

[SWIFT] 컬렉션형 - 세트(Set)

1. 개요 - 같은타입의 데이터를 순서 없이 하나의 묶음으로 저장하는 형태의 컬렉션형 - 세트 내의 값은 모두 유일한 값 - 순서가 중요하지 않거나 각 요소가 유일한 값이어야하는 경우 사용 - Hashable 프로토콜을 따름 (스위프트의 기본 데이터 타입은 모두 Hashable하다.) - 배열과 마찬가지로 [] 대괄호로 값을 묶어 세트 타입임을 표현 - 하지만 배열과 달리 축약형 없음 ( Array를 [Int]로 데이터 타입으로 표현했었다. ) - let 선언시 변경 불가능한 Set - var 선언시 변경 가능한 Set - 빈 세트는 이니셜라이저 또는 리터럴 문법을 통해 생성 할 수 있다. - isEmpty 프로퍼티를 통해 비어있는 세트인지 확인 - count 프로퍼티를 통해 개수 확인 - 키워드 Set..

공부/SWIFT 2021.03.09

[SWIFT] 컬렉션형 - 딕셔너리(Dictionary)

1. 개요 - 요소들이 순서없이 키와 값의 쌍으로 구성되는 타입 - 내부에 없는 키로 접근해도 오류 발생안함 nil을 반환 - 키가 하나이거나 여러개일수 있음 - 키는 유일한 식별자여야함. 중복 불가 - let으로 선언하면 변경 불가 - var로 선언하면 변경 가능 - 이니셜라이저 또는 리터럴 문법을 통해 생성 - isEmpty 프로퍼티를 통해 빈 딕셔너리인지 확인가능 - count 프로퍼티로 딕셔너리 요소 개수 파악 가능 2. 선언 Swift의 모든 기본 유형을 포함 하여 Hashable프로토콜 을 준수하는 모든 유형을 사전 Key유형 으로 사용할 수 있습니다 //HTTP 응답 코드 및 관련 메시지 사전 var responseMessages = [200: "OK", 403: "Access forbidd..

공부/SWIFT 2021.03.09

[SWIFT] 컬렉션형 - 배열 (Array)

1. 개요 - 같은 타입의 데이터를 일렬로 나열한 후 순서대로 저장하는 형태의 컬렉션 타입 - 같은 값 이여도 할당된다. - let키워드 사용시 변경 할 수 없는 배열로 선언된다. - var키워드 사용시 변경 할 수 있는 배열로 선언된다.. - 대괄호[ ] 묶어 Array타입임을 표현 할 수 있다. - isEmpty 프로퍼티로 비어있는 배열인지 확인해 볼 수 있다. - count 프로퍼티로 몇개의 요소가 존재 하는 지 확인 할 수 있다. - 필요에 따라 자동으로 크기를 조절해주므로 요소의 삽입및 삭제가 자유롭다. 2. 배열의 선언 //Swift를 사용하면 배열 리터럴을 사용하여 코드에서 배열을 쉽게 만들 수 있습니다 // An array of 'Int' elements let oddNumbers = [1..

공부/SWIFT 2021.03.09

[SWIFT] 튜플(Tuple) - 프로그래머 마음대로 타입

튜플은 이름이 따로 지정되어있지 않은 지정된 데이터 묶음 이다. 파이썬의 튜플과 유사합니다. 일정 타입의 나열만으로 튜플 타입을 생성 할 수 있습니다. 튜플의 데이터 개수는 자유롭게 정할 수 있습니다. //String, Int, Double 값을 갖는 튜플 var person: (String, Int, Double) = ("알로하리미" , 200, 400.43) //인덱스를 사용해서 해당 값들을 가져올수 있다. print(person.0) // 알로하리미 //인덱스를 사용해서 값을 할당 할 수 있다. person.0 = "하리미" //하리미 위 처럼 인덱스로 접근이 가능하지만 파악을 쉽게 하기 위해 요소마다 이름을 붙일 수 있다. 사용자 임의대로 튜플을 지정 할 수 있으므로 타입별칭(typealias)을..

공부/SWIFT 2021.03.09

[SWIFT] 데이터 타입 특징(타입안심, 타입추론, 타입별칭)

데이터 타입 안심 서로 다른 타입끼리의 데이터 교환은 꼭 형변환(타입캐스팅)을 거쳐야합니다. 스위프트에서 값 타입의 데이터 교환은 타입캐스팅이 아닌 새로운 인스턴스를 생성하여 할당 한다고 보면됩니다. 스위프트는 데이터 타입에대하여 엄격합니다. 그만큼 타입을 안심하고 사용 할 수 있다는 말이기도 합니다. 스위프트는 컴파일시 타입을 확인합니다. 예를 들어 Int타입에 String 타입의 값을 넣으면 컴파일시 오류가 납니다. 타입 추론 스위프트에서는 변수나 상수를 선언할 때 특정 타입을 명시하지 않아도 컴파일러가 할당된 값을 기준으로 변수나 상수의 타입을 결정합니다. let greeting = "Welcome!" //컴파일시 Stirng타입으로 추론 let number = 3 //컴파일시 Int타입으로 추론 ..

공부/SWIFT 2021.03.09

[SWIFT] 데이터 타입 기본 및 자료형(Int~Any까지)

1. Int와 Unit Int : - 부터 + 까지 표현 Uint : 0 부터 + 까지표현 (unsigned Integer) 종류 : Int, Int8, Int16, Int32, Int64, Uint, Uint8, Uint16, Uint32, Uint64 (뒤에 붙은건 bit) * 스위프트는 데이터 타입에 엄격하다. Int와 Uint를 완전히 다른타입으로 인식하기에 값을 교환할때 많은 리소스를 소모 할 수 있으니 보통 Int타입으로 사용하는게 맞다. let tooLarge: Int = Int.max //.min .max로 최대 최소값을 확인 할 수 있다. tooLarge = tooLarge + 1 //Int값 초과로 오류. let decimalInt: Int = 28 let binaryInt: Int =..

공부/SWIFT 2021.03.09

[SWIFT] 특징

스위프트 특징 - Safe, Fast, Expressive Safe : 엄격한 문법을 적용해 실수를 미연해 방지(옵셔널기능 , guard구문 , 오류처리, 강력한 타입통제) Fast : C언어 수준과 동등한 성능을 일정한 수준으로 유지하는데 초점 Expressive : 사용하기 편하고 보기 좋은 문법 구현 - 다중 패러다임 언어 : 명령형과 객체지향 프로그래밍 패러다임을 기반으로 한 함수형 프로그래밍 패러다임과 프로토콜 지향 프로그래밍 패러다임을 지향 - 스위프트는 거의 모든 문법에서 소괄호 () 사용하거나 생략해도 무관 - 세미콜론 ; 도 생략 가능 - 중괄호 {} 생략 불가 객체지향 프로그래밍 패러다임(Object-Oriented Programming OOP ) - 여러개의 독립 단위인 객체의 모임으..

공부/SWIFT 2021.03.05
1