Swift
[Swift] 프로퍼티(Property) - 연산 프로퍼티
💡연산 프로퍼티 (Computed Properties) 연산 프로퍼티는 실제 값을 저장하는 프로퍼티가 아니라, 특정 상태에 따른 값을 연산하는 프로퍼티입니다. 인스턴스 내/외부의 값을 연산하여 적절한 값을 돌려주는 접근자(getter)의 역할이나 은닉화된 내부의 프로퍼티 값을 간접적으로 설정하는 설정자(setter)의 역할을 할 수도 있습니다. 🧐 여기서 "메서드를 두고 왜 굳이 프로퍼티를 쓸까?"라는 의문이 들 수도 있는데요..! 인스턴스 외부에서 메서드를 통해 인스턴스 내부 값에 접근하려면 메서드를 두 개(접근자, 설정자) 구현해야 합니다. 그럼 두 메서드가 분산 구현되어 코드의 가독성이 나빠질 위험이 있습니다. 따라서 프로퍼티가 메서드 형식보다 훨씬 더 간편하고 직관적이라고 합니다~! 다만 연산 프..
[Swift] 프로퍼티(Property) - 저장 프로퍼티
💡프로퍼티 (Property) 프로퍼티는 클래스, 구조체 또는 열거형 등에 관련된 값을 뜻합니다. 프로퍼티는 크게 5가지로 나눌 수 있습니다. 1. 저장 프로퍼티 2. 지연 저장 프로퍼티 3. 연산 프로퍼티 4. 프로퍼티 감시자 5. 타입 프로퍼티 하나씩 순서대로 살펴보겠습니다~! 💡 저장 프로퍼티 (Stored Properties) 저장 프로퍼티는 인스턴스의 변수 또는 상수를 의미합니다. 즉, 클래스 또는 구조체의 인스턴스와 연관된 값을 저장하는 가장 단순한 개념의 프로퍼티입니다. var 키워드를 사용하면 변수 저장 프로퍼티, let 키워드를 사용하면 상수 저장 프로퍼티가 됩니다. 다음은 가장 기본적인 저장 프로퍼티 선언과 인스턴스 초기화하는 방법입니다. // 좌표 struct CoordinatePoi..
[Swift] 구조체와 클래스
구조체와 클래스는 프로그래머가 데이터를 용도에 맞게 묶어 표현하고자 할 때 유용합니다. 또한 프로퍼티와 메서드를 사용하여 구조화된 데이터와 기능을 가질 수 있습니다. 즉, 하나의 새로운 사용자 정의 데이터 타입을 만들어 주는 것입니다. 이러한 구조체와 클래스는 서로 비슷하거나 다음과 같은 공통점이 많습니다. 값을 저장하기 위해 프로퍼티를 정의할 수 있습니다. 기능 실행을 위해 메서드를 정의할 수 있습니다. 서브 스크립트 문법을 통해 구조체 또는 클래스가 갖는 값(프로퍼티)에 접근하도록 서브 스크립트를 정의할 수 있습니다. 초기화될 때의 상태를 지정하기 위해 이니셜라이저를 정의할 수 있습니다. 초기 구현과 더불어 새로운 기능 추가를 위해 익스텐션을 통해 확장할 수 있습니다. 특정 기능을 실행하기 위해 특정..
[Swift] 옵셔널(Optional)
💡옵셔널(Optional) 옵셔널은 스위프트의 특징 중 하나인 안전성을 문법으로 담보하는 기능입니다. 옵셔널을 직역하면 '선택적인'이라는 뜻을 가지고 있는데요. 즉, 값이 있을 수도, 없을 수도 있다는 것을 나타냅니다. 그럼 예를 하나 들어볼까요? Int 타입의 변수에 0을 할당하고 Srtring 타입의 변수에 ""로 빈 문자열을 만들었다면 이 두 개의 변수는 모두 값이 없다는 의미일까요? 정답은 땡❗️0과 ""빈 문자열 모두 하나의 값이지, 값이 없는 것은 아닙니다. 그렇다면 값이 없을 때는 어떻게 표현해야 될까요? 바로 nil로 표현하면 됩니다. 따라서 옵셔널을 읽을 때는 '변수나 상수가 nil일 수도 있으므로 사용에 주의하라'는 뜻으로 받아들일 수 있습니다. 이제 옵셔널을 한번 사용해 볼까요?✨ v..
[Swift] 함수(Function) - 매개변수
💡매개변수(Parameter) 함수를 정의할 때 외부로부터 받아들이는 전달 값의 이름을 의미합니다. 💡전달인자(Argument) 함수를 실제로 호출할 때 전달하는 값을 의미합니다. 매개변수가 없는 함수 함수에 매개변수가 필요 없다면 매개변수 위치를 공란으로 비워둡니다. func helloWorld() -> String { return "Hello, world" } print(helloWorld()) // Hello, world 매개변수가 여러 개인 함수 매개변수가 여러 개인 함수를 정의할 때는 쉼표(,)로 매개변수를 구분합니다. 호출 시에는 매개변수 이름(Parameter Name)을 붙여주고 콜론(:)을 적어준 후 전달인자를 보내줍니다. func greeting(myName: String, yourNa..
[Swift] 함수(Function) - 정의와 호출
💡함수 선언의 기본 형태 스위프트에서 함수를 정의하는 키워드는 func입니다. 이를 사용한 함수의 기본 형태는 다음과 같습니다. func 함수 이름(매개변수1이름: 타입, 매개변수2이름: 타입 ...) -> 반환 타입 { 실행 구문 return 반환 값 } 기본 형태의 함수 정의와 호출 func greet(name: String) -> String { let greeting = "Hello, " + name + "!" return greeting } let helloJenny: Sting = greet(name: "Jenny") print(helloJenny) // Hello, Jenny! 이를 더 간단하게 다음과 같이 구현할 수 있습니다. func greeting(name: String) -> Stri..
[Swift] 열거형(Enumeration)
💡열거형(Enumerations) 열겨형은 연관된 항목들을 묶어서 표현할 수 있는 타입입니다. 프로그래머가 정의해준 항목 값 외에는 추가/수정이 불가하기 때문에 딱 정해진 값만 열거형 값에 속할 수 있어요 스위프트의 열거형은 enum이라는 키워드로 선언할 수 있습니다. 열거형 선언 enum WeekDays { case mon case tue case wed case thu case fri case sat case sun } // 위와 같은 표현 enum WeekDays { case mon, tue, wed, thu, fri, sat, sun } 각 항목은 그 자체가 고유한 값입니다. 열거형 변수 생성 및 값 변경 var today: WeekDays = WeekDays.mon // 위 코드와 같은 표현 v..
[Swift] 컬렉션형 - 세트(Set)
💡세트(Set) 같은 타입의 데이터를 순서 없이 하나의 묶음으로 저장하는 형태의 컬렉션 타입입니다. ❗️세트 내에는 중복된 값이 존재하지 않으므로 모두 유일한 값입니다. ❗️세트의 요소로는 해시 가능한 값이 들어와야 합니다. 해싱(hashing)이란? 각각의 객체에 식별할 수 있는 숫자 코드를 부여하여 객체를 테이블에 저장하는 것을 말합니다. 빈 세트 생성하기 var emptySet: Set = Set() var emptySet: Set = [] // 위와 동일한 표현 배열과 딕셔너리와 달리 줄여서 표현할 수 있는 축약형이 없습니다. 세트 생성하고 사용하기 var fruits: Set = ["apple", "melon", "peach", "apple"] // 요소의 개수 확인 print(fruits.co..
[Swift] 컬렉션형 - 딕셔너리(Dictionary)
💡딕셔너리 요소들이 순서 없이 키와 값의 쌍으로 구성되는 컬렉션 타입입니다. ❗️하나의 딕셔너리 안의 키는 같은 이름을 중복해서 사용할 수 없습니다. 빈 딕셔너리 생성하기 // Key가 String 타입이고 Value가 Any인 빈 Dictionary 생성 var emptyDictionary: Dictionary = [String: Any]() // 위와 같은 표현 var emptyDictionary: Dictionary = Dictionary() var emptyDictionary: Dictionary = [:] var emptyDictionary: [String: Any] = Dictionary() var emptyDictionary: [String: Any] = [String: Any]() var ..
[Swift] 컬렉션형 - 배열(Array)
💡배열(Array) 같은 타입의 데이터를 일렬로 나열한 후 순서대로 저장하는 형태의 컬렉션 타입입니다. 배열을 변수(var)로 선언해주면 변경 가능한 배열이 되고 상수(let)로 선언해주면 변경 불가능한 배열이 됩니다. 빈 배열 생성하기 var emptyArray: Array = Array() //위와 동일한 표현 var emptyArray: Array = Array() var emptyArray: Array = [Any]() var emptyArray: Array = [] var emptyArray: [Any] = Array() var emptyArray: [Any] = [Any]() var emptyArray: [Any] = [] var emptyArray = [Any]() 배열 생성하기 var fr..