SWIFT

Language/Swift

Swift - Class, Struct, Enum 비교하기

다시 한 번 요약하는 Class(클래스)전통적인 객체지향 관점의 클래스단일 상속참조 타입 다시 한 번 요약하는 Struct(구조체)상속 불가값 타입 다시 한 번 요약하는 Enum(열거형)상속 불가값 타입열거형은 자체가 하나의 데이터 타입으로 취급되고, case 전부 각각 유의미한 값으로 취급된다. 그럼 Class(클래스)와 비슷한 Struct(구조체)는 언제 사용할까?연관된 값들을 모아 하나의 데이터 타입으로 표현하려 할 때다른 객체나 함수 등에 전달될 때 복사를 원할 때(참조가 아닌)상속해줄 필요가 없거나 다른 타입을 상속받을 필요가 없을 때 여기서 Value(값) vs Reference(참조) 차이가 뭘까Value(값) 타입은 데이터 전달 시 값을 복사하여 전달한다.Reference(참조) 타입은 데..

Language/Swift

Swift - 열거형(Enum)

열거형(Enum)은 무엇일까?열거형은 관련된 값을 정의하는 타입이다.따라서, 이름을 지을 때는 파스칼 케이스로 작성한다.열거형 내부의 case는 그 자체가 고유 값이기 때문에 카멜 케이스로 작성한다. 간단한 열거형 만들기요일에 대한 열거형을 만든다면 아래처럼 만들어볼 수 있다.enum DayOfWeek { case mon case tue case wed, thu, fri, sat, sun}mon와 tue처럼 한 줄씩 선언해도 되고, 마지막 줄처럼 콤마로 구분하여 한 줄로 선언할 수도 있다. 열거형 사용해보기var day: DayOfWeek = DayOfWeek.monday = .thuswitch day { case .mon, .tue, .wed, .thu: print("평일") c..

Language/Swift

Swift - 클래스(Class)

1. 클래스란 무엇일까? 클래스는 참조(reference) 타입이다. 이름은 파스칼 케이스로 작성한다. 클래스는 다중 상속이 불가능하다. 2. 클래스 관련 문법 클래스를 선언할 때는 class 키워드를 사용한다. class Sample { // 가변 프로퍼티 var mutableProperty: Int = 100 // 불변 프로퍼티 let immutableProperty: Int = 100 // 타입 프로퍼티 static var typeProperty: Int = 100 // 인스턴스 메서드 func instanceMethod() { print("instance method") } // 타입 메서드 static func typeMethod() { print("type method - static") } ..

Language/Swift

Swift - 구조체(Struct)

1. 구조체란 무엇일까? 구조체는 값(value) 타입이다. 스위프트에서 대부분 타입은 구조체라고 한다. 타입이름은 파스칼 케이스를 사용한다. 2. 구조체 관련 문법 구조체를 선언할 때는 C언어처럼 struct 키워드를 사용한다. struct Test { // 가변 프로퍼티 var mutableProperty: Int = 100 // 불변 프로퍼티 let immutableProperty: Int = 100 // 타입 프로퍼티 static var typeProperty: Int = 100 // 인스턴스 메서드 func instanceMethod() { print("instance method") } // 타입 메서드 static func typeMethod() { print("type method") } ..

Language/Swift

Swift - 옵셔널(Optional)

1. 옵셔널의 개념 값이 있을수도, 없을수도 있음을 표현한다. nil이 할당될 수 있는지 없는지 여부의 표현이다. 2. 옵셔널을 쓰는 이유 - nil의 가능성을 코드만으로 표현할 수 있다. - 문서/ 주석 작성 시간을 절약할 수 있다. - 전달받은 값이 옵셔널이 아니라면 nil 체크를 하지 않고 사용할 수 있다. - 예외 상황을 최소화하는 안전한 코딩 기법이다. 3. 옵셔널 문법과 선언 옵셔널 문법은 enum + generics 라고 한다. enum Optional: ExpressibleByNiliteral { case none case some(Wrapped) } let optionalValue: Optional = nil let optionalValue: Int? = nil 나는 지금까지 자바나 코틀..

Language/Swift

Swift - 반복문 (for-in, while, repeat-while)

1. for-in 기존 언어의 for each문과 유사하다. Dictionary의 경우, iteration 아이템으로 튜플이 들어온다. var integers = [1, 2, 3] for (integer in integers) { print(integer) } let people = ["kim": 20, "lee": 35, "park": 50] for (name, age) in people { print("\(name), \(age)") } 2. while, repeat-while 먼저 while문은 사용형태가 이전 조건문에서의 차이점 정도만 다르고 방법은 같다. repeat-while문은 do-while과 형태와 동작이 비슷하다. while integers.count > 2 { //실행문 } repea..

Language/Swift

Swift - 함수 고급

1. 파라미터 기본값 파라미터에 기본으로 전달될 값을 미리 지정해둘 수 있다. 여기서 기본값을 지정할 파라미터는 파라미터 목록 중 뒤쪽에 위치하는 것이 좋다고 한다. func 함수 이름(파라미터 이름: 파라미터 타입, 파라미터 이름: 파라미터 타입 = 파라미터 기본값) -> 리턴 타입 { //함수 구현 return 리턴값 } //게다가 함수 호출 시 기본값이 있는 파라미터는 생략이 가능하다 2. 전달인자 레이블(Argument Label) 사용자 입장에서 함수 호출 시 파라미터 역할을 더 명확히 알 수 있도록 할 때 사용한다. 전달인자 레이블을 변경해 동일한 이름의 함수를 중복으로 생성 가능하다. 이 부분이 제대로 이해가 안됐는데 밑에 코드로 다시 적어보겠다. func 함수 이름(전달인자 레이블 파라미터..

Language/Swift

Swift - 함수 기본

Swift에서의 함수는 Kotlin과 Java를 섞어놓은 듯한 모습이라고 생각한다. 파라미터를 나열할 때, 이름 : 자료형 방식으로 작성하는 부분이 있기도 하고, 리턴이 없는 함수는 Void라는 키워드가 들어가기도 한다. 파라미터가 없는 함수는 JavaScript 분위기가 나기도 한다. 1. 함수 선언의 기본 형태 func 함수이름 (파라미터 이름: 파라미터 타입) -> 리턴타입 { //함수 구현 return 리턴 값 } 2. 반환 값이 없는 함수 func 함수이름(파라미터 이름: 파라미터 타입) -> Void { //함수 구현 return //아예 생략이 가능하다 } func 함수이름(파라미터 이름: 파라미터 타입) { //함수 구현 } //Void도 생략이 가능하다 3. 매개변수가 없는 함수 func..

Language/Swift

Swift - 컬렉션 타입(Collection Type) - Array, Dictionary, Set

개인적으로 여러 언어를 접하면서 가장 표현법이 다양해서 헷갈리는 친구들이다. 1. Array (배열) Swift에서 배열을 선언하는 문장을 본 첫 느낌은 Kotlin에서의 ArrayList같다는 느낌을 가장 먼저 받았다. 그런데 여기에 배열을 한 스푼추가한... 그런 느낌? 를 쓰다가도 []를 쓰고 뭔가 어색했다. var integers: Array = Array() //var integers: Array = [Int]() //var integers: Array = [] //var integers: [Int] = Array() //var integers: [Int] = [Int]() //var integers: [Int] = [] //var integers = [Int]() //위의 주석들이 Array를..

Language/Swift

Swift - Any, AnyObject, nil

1. Any Swift의 모든 타입을 지칭하는 키워드이다. var a: Any = 10 a = "어떤 타입이든 가능" a = 12.34 let b: Double = a //error //Any 타입에 Double형을 할당해두었더라도 Any는 Double 타입이 아니기 때문에 할당할 수 없다. 2. AnyObject 모든 클래스 타입을 지칭하는 프로토콜이다. class Student {} var firstStudent: AnyObject = Student() firstStudent = 123 //error //AnyObject는 어떤 클래스의 인스턴스라도 할당 가능하지만 값은 할당할 수 없다. 3. nil 없음을 의미하는 키워드로 다른 언어에서의 Null과 유사하다. var abc: Any = 100 va..

BonusTrack02.dev
'SWIFT' 태그의 글 목록