분류 전체보기 260

12. Swift Method

function과 method의 차이: method는 instance에 귀속되어서 사용할 수 있는 것 function과 마찬가지로 기능을 수행하는 코드블록이다. function과 다르게 Structure, Class안에서 동작하는 것 이번에는 Structure와 관련된 Method에 대해 알아보자 struct Lecture { var title: String var maxStudents: Int = 10 var numOfRegistered: Int = 0 // 강의의 남은 자리수 확인하는 함수 func remainSeats() -> Int { return lec.maxStudents - lec.numOfRegistered } // swift는 var 변수라도 함부로 값을 변경하면 안된다. // func ..

1. Swift Method vs. Computed Property

의문? computed property와 메소드의 차이는 뭘까? 이미 저장된 stored property를 갖고 값을 재 가공하거나, 재 계산 할때 사용한다. 여기서 get, set의 경우 기존의 자바에서는 메소드로 만들어 줬는데 여기서는 stored property로 값을 가공하여 return 하는 computed property를 이용했다. var fullName: String { return "\(firstName) \(lastName)" } func fullName() -> String { return "\(firstName) \(lastName)" } 결론: Property : 호출시 저장된 값을 하나 반환한다. Method: 호출시 어떤 작업을 한다. 만약 Method가 그냥 값을 리텅하는 작..

11. Swift Property(속성)

Property: 속성, 데이터를 의미 Stored Property: 값이 초기화되어 저장되어있는 데이터(nil로 저장된것도 포함) Computed Property: 어떤 값을 저장하지 않고 저장된 정보를 이용해서 가공 혹은 계산된 값을 이용 접근할때마다 다시 계산이 되어 값 변경시 새로운 값을 이용해서 다시 제공한다. Protocol에서의 예시인 var description이 Computed Property이다. 꿀팁을 주자면 변수가 var로 되어있는데 값변경으로인한 오류를 막기위해 let으로 선언을 권고 struct Person { var firstName: String var lastName: String var fullName: String { return "\(firstName) \(lastNa..

10. Swift Protocol

Protocol: 규약, 약속 꼭 구현되어야하는 method나 Property(속성) 같은것들이다. 즉, 어떤 서비스를 이용할 때 반드시 필요한 것들이 있을 것인데, 프로토콜을 서비스에서 반드시 필요한 일, 요소들을 의미한다. Integer 도 Structure로 구성되어 있다. public struct Int : FixedWidthInteger, SignedInteger 여기서 FixedWidthInteger, SignedInteger 이 프로토콜이라는 놈들이다. public protocol CustomStringConvertible { public var description: String {get} } 여기서 CustomStringConvertible이 protocol이라고 선언이 되면 내부에 있는..

9. Swift Structure practice

// 도전과제 // 1. 강의이름, 강사이름, 학생수를 가지는 구조체 만들기 (Lecture) // 2. 강의 array와 강사이름을 받아서, 해당 강사의 강의이름을 출력하는 함수만들기 // 3. 강의 3개를 만들고, 강사이름으로 강의찾기 struct Lecture { let lectureName: String let lectureTeacher: String let numOfStudent: Int } let lec1 = Lecture(lectureName: "OS", lectureTeacher: "김호원", numOfStudent: 40) let lec2 = Lecture(lectureName: "Database", lectureTeacher: "이기준", numOfStudent: 50) let lec3..

8. Swift Structure

// Structure: 관계가 있는 것들을 묶어서 표현한 것 // Structure와 Class는 동작이 다르다. // 구조체는 Value Types으로 변수에 할당될 때 Copy되어 할당된다. // 클래스는 Reference Types으로 변수에 할당될 때 참고되는 형태(공유)로 할당된다. // Structure는 Stack에 할당되고, Class는 Heap에 할당이 된다. // let pClass1 = PersonClass(name: "me") // let pClass2 = pClass1 // pClass2.name = "Hey" // pClass1.name // Hey // pClass2.name // Hey // let pStructure1 = PersonStruct(name: "me") // ..

7. Swift Closure 조금더

// Closure 보강!!!! // 함수는 어떤 기능을 수행하는 코드블록이며, // Swift에서는 함수와 같이 기능을 수행하는 코드블록의 특별한 타입인 Closure가 존재한다. 사실 Closure가 더 상위 개념이다 // Swift 공식사이트에서 정의한 Closure: // Closure는 크게 3가지 타입이 존재한다. // Global functions are closures that have a name and don’t capture any values. // Nested functions are closures that have a name and can capture values from their enclosing function. // Closure expressions are unna..

6. Swift Closure basic

// Closure : 이름이 없는 메소드라고 생각하면 된다. // (Int, Int) -> Int : 클루져의 타입 var multiply1: (Int, Int) -> Int = { (a:Int, b:Int) -> Int in return a * b } // 여기서 간략하게 쓸 수 있다. // a, b는 Int로 들어올 것이고, 반환도 Int로 한다고 type을 지정했다. var multiply2: (Int, Int) -> Int = { a, b in return a * b } // 그리고 들어오는 파라미터의 index를 나타낼 수 있다. var multiply3: (Int, Int) -> Int = { return $0 * $1 } var multiplyClosure: (Int, Int) -> Int..

5. Swift Collection(Dicionary, Set)

// Dictionary // 순서가 없이 key와 value로 구성된다. // 커피에 이름을 적는 것과 비슷한 구조이다. // Key는 Unique해야한다. var scoreDic: [String: Int] = ["Jason": 80, "Jay": 95, "Jake": 90] var scoreDic1: Dictionary = ["Jason": 80, "Jay": 95, "Jake": 90] print(scoreDic) print(scoreDic["Jay"]) // Optional type이다. 없을 수 있기때문 print(scoreDic["duddn"]) // nil 값이 나온다. if let score = scoreDic["Jay"] { print(score) } // isEmpty, count pr..

4. Swift Collection (Array)

// Collection 컬렉션, 수집 ... // 수많은 변수를 하나의 통에 넣어 관리하면 편하다 // 이때 통에서 순서를 두어 커피를 나눠줄 수 있다. // 커피에 이름이 새겨 구분하여 나눠줄 수 있다. // Array, Dictionary, Set, Closure // Array : 동일한 타입, 순서index var evenNumbers: [Int] = [2, 4, 6, 8] var evenNumbers2: Array = [2, 4, 6, 8] evenNumbers.append(10) //let이면 오류뜬다. print(evenNumbers) evenNumbers += [12, 14, 16] print(evenNumbers) evenNumbers.append(contentsOf: [18, 20])..

3. Swift Optional

//Optional: 있는 것과 없는 것을 모두 표현하기 위함 // 코드 중간에 ?, !가 들어가서 이상해 보일 수 있다. // var name: String = "Joon" // 없는 것에 대해 표현하기 애매하다. 없는 것을 어떻게 표현할 것인가!! // var dogName: String = ??? // 존재하지 않음을 표현 : nil(없을 무), None과 유사 var carName: String? //Optional 변수의 표현 //여러분이 최애하는 영화배우 이름을 담는 변수 작성하기, 타입:String //let num = Int("10") 에서 num의 type는? var favoriteActor: String? = nil // 없을 수 있다. print(favoriteActor) //여기서 ..