Swift 22

04.5 확장_Extension

확장(Extension)확장(Extension)은 기존의 클래스, 구조체, 열거형 등에 새로운 기능을 추가하는 방법이다.기존 타입의 기능을 확장하거나 프로토콜을 채택한 타입에 기능을 추가할 수 있다.확장을 통해 기능을 추가하면 기존 코드를 변경하지 않고도 새로운 기능을 활용할 수 있어 유지 보수성과 코드 재사용성이 높아진다.extension 키워드를 사용한다.   타입 확장기능 추가 : 기존 타입에 새로운 메소드나 연산 프로퍼티를 추가할 수 있다.extension Int { func multiply(by factor: Int) -> Int { return self * factor } } // Int형 타입에 새로운 메소드를 추가let number = 5let result = nu..

Swift 2023.07.19

04.4 연산자 오버로딩_Operator Overloading

연산자 오버로딩연산자 오버로딩은 기존에 정의된 연산자에 대해 새로운 동작을 정의하는 것을 의미한다.다양한 연산자들을 오버로딩할 수 있으며, 기존 연산자의 동작을 변경하거나 새로운 형식에 대해 사용자 정의 연산을 추가할 수 있다.다양한 종류의 연산자를 오버로딩할 수 있다. 주요한 연산자의 종류는이항 연산자: +, -, *, /, %, ==, !=, , = 등단항 연산자: -, !, ++, -- 등할당 연산자: =, +=, -=, *=, /=, %= 등범위 연산자: ..비트 연산자: &, |, ^, > 등논리 연산자: &&, ||   연산자 오버로딩 함수연산자 오버로딩은 기존 연산자에 대해 동작을 정의하는 특별한 함수로 구현한다.연산자 오버로딩 함수는 해당 연산자가 사용되는 두 개의 피연산자에 대한 동작을 ..

Swift 2023.07.19

04.3 타입 프로퍼티, 메소드_Type Property, Type Method

타입 프로퍼티(Type Property), 타입 메소드(Type Method)타입 프로퍼티(Type Property)와 타입 메소드(Type Mothod)란 클래스, 구조체 또는 열거형 자체에 속하는 프로퍼티, 메서드이다.인스턴스 메서드와 달리 타입 메서드는 특정 인스턴스에 속하는 것이 아니라 타입 자체에 속한다.   타입 프로퍼티, 메소드 문법타입 메소드는 static 키워드나 class 키워드를 사용하여 정의할 수 있다.static : 서브클래스에서 재정의(오버라이딩) 할 수 없는 타입 메소드가 된다.class : 서브클래스에서 재정의 할 수 있는 타입 메소드가 된다.import Foundationstruct Point { static var origin = Point(x: 0, y: 0) //..

Swift 2023.07.19

04.2 클로저_Closure

클로저(Colsure)클로저는 일급 객체로, 변수나 상수에 할당하고 전달할 수 있는 독립적인 코드 블럭이다.함수와 유사한 기능을 하며, 쉽게 생각하면 이름 없는 익명 함수를 생각할 수 있다.   클로저의 문법중괄호로 둘러싸인 코드 블록으로 표현된다.클로저 내부에서 사용되는 변수나 상수는 캡처되어 클로저 내부에서 사용할 수 있습니다. { (매개변수) -> 반환값 in     return  코드} let hello = { () -> () in print("Hello")}hello()Hello  let hello2 = { (name: String) -> String in return ("Hello \(name)! ")}print(hello2("usia")) // print(hello2(..

Swift 2023.07.19

04.1 에러 처리_Error Handling

에러 처리(Error Handling)프로그램 실행 중 예외 상황이 발생할 때, 이를 적절하게 처리하는 방법에러를 나타내기 위해 Error 프로토콜을 준수하는 사용자 정의 에러 타입을 정의한다.에러를 발생시키기 위해 throw 키워드를 사용하여 에러를 던진다.에러를 처리하기 위해 do-catch문을 사용하여 에러를 감싼 코드 블록을 정의하고, catch 블록에서 에러를 처리한다.do {    try 오류 발생 가능 코드}  catch 오류 패턴 {    처리 코드}enum PhoneError: Error{ case unknown case batteryLow(BatteryLevel: Int)}//throw PhoneError.batteryLow(BatteryLevel: 20)func checkP..

Swift 2023.07.13

03.6 프로토콜_Protocol

프로토콜(Protocol)프로토콜(Protocol)이란 Swift에서 인터페이스의 역할을 수행하는 개념이다.특정 역할을 수해하기 위한 메서드, 프로퍼티 및 기타 요구사항의 청사진을 정의할 수 있다.  프로토콜 선언{ get } : 읽기 전용으로 수정이 불가능하다. (클래스의 프로퍼티가 변수이면 가능하다.){ get set } : 읽기, 쓰기 전용으로 수정이 가능하다.portocol 프로토콜명 {    코드}protocol MyProtocol { var name: String { get } var age: Int { get set } func greeting(){ print("Hello, I'm \(name)") }}    프로토콜 사용클래스, 구조체 또는 열거형은 : ..

Swift 2023.07.12

03.5 제네릭_Generic

제네릭(Generic)다양한 타입에 일반화된 코드를 작성할 수 있게 해주는 기능특정 타입에 종속되지 않고 유연하게 코드를 작성할 수 있게 되어 코드의 일반성과 타입 안정성이 높아진다.swift에서 가장 강력한 기능 중 하나로, swift의 표준 라이브러리 대부분은 제네릭으로 선언되어있다.   제네릭 함수(Generic function)제네릭 함수는 다양한 타입에 대해 동작하는 함수이다.함수의 매개변수나 반환 타입을 일반적인 형식 대신 제네릭 형식으로 선언한다.func 함수명(파라미터명: T){    code}func printAny(element: T) { print(element)}printAny(element: "usia")printAny(element: 1234)printAny(element:..

Swift 2023.07.12

03.4 타입 캐스팅_Type Casting

타입 캐스팅(Type casting)타입 캐스팅(Type casting) : 객체의 타입을 확인하거나 다른 타입으로 변환하는 기능  타입 확인(Type Checking)is 연산자를 통해 객체의 타입을 확인할 수 있다.is 연산자는 주어진 객체가 특정 타입인지를 확인하고 true 또는 false를 반환한다.class Animal { }class Dog: Animal { }let animal = Animal()let dog = Dog()print(animal is Animal) // 출력: trueprint(dog is Animal) // 출력: trueprint(animal is Dog) // 출력: falseprint(dog is Dog) // 출력: true   업캐스팅(Upca..

Swift 2023.07.12

03.3 프로퍼티_Property

프로퍼티(Property)프로퍼티(Property)란 클래스, 구조체, 열거형 등의 객체 타입 내부에 저장된 값이나 연산을 위한 멤버를 나타낸다.종류저장 프로퍼티(Stored Properties)연산 프로퍼티(Computed Properties)지연 저장 프로퍼티(Lazy Stored Properties)프로퍼티 감시자(Property Observers)   저장 프로퍼티(Stored Property)값을 저장하기 위해 사용되는 가장 일반적인 프로퍼티 유형struct Person { var name: String // 저장 프로퍼티 var age: Int // 저장 프로퍼티}var person = Person(name: "Alice", age: 26)print(person.name, perso..

Swift 2023.07.08

03.2 클래스_Class

클래스(Class)클래스(Class)는 객체로서 데이터와 동작(함수: 메서드)를 묶은 개념이다.구조체와 다르게 클래스는 참조 타입(Reference Type)으로 변수에 할당될 때 참조하며 여러 개의 변수가 동일한 인스턴스를 가르킬 수 있다.  클래스의 선언과 인스턴스 생성class 클래스명 {    코드}var/let 변수명/상수명: 클래스명 = 클래스명(프로퍼티: ...)class Person { var name: String var age: Int init(name: String, age: Int){ self.name = name self.age = age } func info()->String{ return "My n..

Swift 2023.07.06