본문 바로가기

전체 글131

열거형에 관하여 2 열거형의 연관값(Associated Values) -열거형의 각 항목들은 연관값이라는 것을 가질 수 있다. -연관값은 각 항목 옆에 소괄호를 통해 표현할 수 있고, 일부 항목들이 연관값을 가졌다고 모든 항목이 연관값을 가질 필요는 없다. ex) 연관값 각 항목 옆에 튜플을 통해 내가원하는 연관값을 받을 수 있게 선언할 수 있다. 연관값을 사용하고 싶을 때는 . 을 이용해서 이니셜라이저안에 값을 넣어 사용할 수 있다. 열거형의 항목순회 -열거형에 포함된 모든 항목들을 알고 싶을 때, CaseIterable 프로토콜을 사용할 수 있다. -CaseIterable을 채택하면 allCases라는 타입 프로퍼티를 통해 모든 항목의 컬렉션을 생성할 수 있다. ex) : 콜론을 통해 CaseIterable 프로토콜 채.. 2023. 2. 17.
열거형에 관하여 열거형에 대해서 알고는 있지만 프로젝트를 할 때, 열거형을 자주 사용하지 않기 때문에 개념을 정리해보고자 한다. 열거형(Enumeration) -연관된 항목들을 묶어서 표현할 수 있는 타입이다. -배열이나 딕셔너리는 내부 요소를 추가하거나 수정할 수 있지만, 열거형은 프로그래머가 정의한 항목 외에는 추가나 수정이 불가능하다. -이미 정해놓은 값만 사용하기 때문에 코드를 작성할 때, 오타낼 가능성을 줄여주어 안정성이 향상된다. -Value(값)타입으로 stack 영역에 저장된다. (성능이 좋다.) -열거형이 사용되면 좋은 상황 1. 제한된 선택지를 주고 싶을 때 2. 정해진 값 외에는 입력받고 싶지 않을 때 3. 예상된 입력 값이 한정되어 있을 때 열거형의 사용 -enum 키워드를 사용하여 선언한다. 위의.. 2023. 2. 15.
함수와 메소드의 차이 먼저 결론부터 짓고 가면 함수안에 메소드가 있는 형태다. 메소드 -메소드는 클래스, 구조체, 열거형에 속해 있는 함수를 말한다. -메소드의 종류에는 인스턴스 메소드와 타입 메소드가 있다고 이전에 배웠다. 인스턴스 메소드를 사용하기 위해서는 인스턴스를 만든 후 .을 통해 접근이 가능하고, 타입 메소드는 타입 . 을 통해 접근이 가능. class Student { static func introduce1() { print("나를 소개") } func introduce2() { print("나를 소개") } } Student.introduce1() //타입 메소드 let student = Student() student.introduce2() //인스턴스 메소드 함수 -클래스, 구조체, 열거형과 무관하고 재사.. 2023. 2. 6.
SingleTon(싱글톤)에 관하여 싱글톤 패턴 -Class가 인스턴스를 하나만 가지도록 제한하면서 언제 어디서든 인스턴스에 접근할 수 있도록 하는 디자인 패턴이다. -특정 기능을 수행하는 객체 하나를 생성하여, 공용으로 사용할 때 사용된다. 싱글톤 구현 방법 1. 싱글톤 클래스가 메모리에 처음으로 올라갈 때, 한 번만 초기화되는 타입 인스턴스를 정의한다. class Singleton { static let shared = Singleton() } 언제 어디서든 접근하기 위해 static 키워드를 통해 타입 프로퍼티를 만들고 인스턴스를 정의한다. 2. 클래스의 기본 이니셜라이저 메소드를 private으로 제한한다. class Singleton { static let shared = Singleton() private init() { } }.. 2023. 2. 3.
Static과 Class에 관하여 -클래스, 구조체, 열거형 안에서 선언되는 함수나 변수/상수를 메소드와 프로퍼티라고 부른다. -Static과 Class는 프로퍼티나 메소드의 타입을 정의하기 위해 사용하는 키워드이다. -메소드 앞에 키워드가 붙으면 "타입 메소드", 프로퍼티 앞에 키워드가 붙으면 "타입 프로퍼티" 라고 정의한다. 타입 메소드 평소처럼 메소드를 선언해보았다. class Student { func instanceMethod() { } } 안에 있는 메소드를 사용하기 위해서는 Student 클래스의 인스턴스를 만들어 함수를 실행해야 한다. 따라서 우리가 평소에 사용하는 인스턴스를 만들어 실행하는 메소드의 이름은 인스턴스 메소드라고 한다. ex) 타입 메소드의 정의 class Student { static func staticM.. 2023. 1. 31.
오버로딩(Overloading)에 관하여 오버로딩(Overloading) -함수의 이름은 같지만 파라미터나 리턴 타입 등을 다르게 해서 함수의 중복사용이 가능토록 하는 것 함수를 작성할 때 그냥 같은 함수를 똑같이 작성하면 오류가 발생한다. ex) func hello() { //내용 } func hello() { //Invalid redeclaration of 'hello()' //내용 } 알다시피 위와 같이 똑같은 함수를 중복 사용하는 것은 불가능하다. 동일한 함수 이름이지만 파라미터, 리턴 타입을 다르게 만들면? ex) func hello() { print("hello") } func hello(name : String) { print("hello \(name)") } func hello() -> String { return "hello" .. 2023. 1. 30.