PersonClass는 자신을 참조하는 변수를 할당해줄 수 있다.
이 경우 할당된 두 변수 pClass1, pClass2는 PersonClass라는 하나의 클래스만을 가리키고 있다.
그 클래스만을 가리키는 여러 개의 변수가 있을 수 있는 것이다
PersonStruct는 자신의 모양과 똑같은 분신을 복제해서 나눠준다
각 변수 pStruct1, pStruct2는 PersonStruct의 형식을 똑같이 갖고, 독자적인 정보를 저장할 수 있다.
구조체를 이용해 가장 가까운 편의점 찾기
func distance(current: Location, target: Location) -> Double {
// 피타고라스..
let distanceX = Double(target.x - current.x)
let distanceY = Double(target.y - current.y)
let distance = sqrt(distanceX * distanceX + distanceY * distanceY)
return distance
}
struct Location {
let x: Int
let y: Int
}
struct Store {
let loc: Location
var name: String
let deliveryRange = 2.0
func isDeliverable(userLoc: Location) -> Bool {
let distanceToStore = distance(current: userLoc, target: loc)
return distanceToStore < deliveryRange
}
}
// Given stores
let store1 = Store(loc: Location(x: 3, y: 5), name: "gs")
let store2 = Store(loc: Location(x: 4, y: 6), name: "seven")
let store3 = Store(loc: Location(x: 1, y: 7), name: "cu")
// Given printClosestStore func
func printClosestStore(currentLocation: Location, stores: [Store]) {
var closestStoreName = ""
var closestStoreDistance = Double.infinity
var isDeliverable = false
for store in stores {
let distanceToStore = distance(current: currentLocation, target: store.loc)
closestStoreDistance = min(distanceToStore, closestStoreDistance)
if closestStoreDistance == distanceToStore {
closestStoreName = store.name
isDeliverable = store.isDeliverable(userLoc: currentLocation)
}
}
print("Closest store: \(closestStoreName) deliverable: \(isDeliverable)")
}
// Set stores and myLocation
let stores = [store1, store2, store3]
let myLocation = Location(x: 2, y: 5)
// Use printClosestStore func to print
printClosestStore(currentLocation: myLocation, stores: stores)
도전과제
import UIKit
// 도전 과제
// 1. 강의 이름, 강사 이름, 학생수를 가지는 Struct 만들기 (Lecture)
// 2. 강의 어레이이와 강사이름을 받아서 , 해당 강사의 강의 이름을 출력하는 함수 만들기
// 3. 강의 3개 만들고 강사이름으로 강의 찾기
// CustomStringConvertible
struct Lecture: CustomStringConvertible {
var description: String {
return "Title: \(name), Instructor: \(instructor)"
}
let name: String
let instructor: String
let numOfStudent: Int
}
func printLectureName(from instructor: String, lectures: [Lecture]) {
var lectureName = ""
for lecture in lectures {
if instructor == lecture.instructor {
lectureName = lecture.name
}
}
// let lectureName = lectures.first { $0.instructor == instructor }?.name ?? ""
print("아 그 강사님 강의는요: \(lectureName)")
}
let lec1 = Lecture(name: "iOS Basic", instructor: "Jason", numOfStudent: 5)
let lec2 = Lecture(name: "iOS Advanced", instructor: "Jack", numOfStudent: 5)
let lec3 = Lecture(name: "iOS Pro", instructor: "Jim", numOfStudent: 5)
let lectures = [lec1, lec2, lec3]
printLectureName(from: "Jack", lectures: lectures)
print(lec1)
올인원 패키지 : iOS 앱 개발👉https://bit.ly/2FjWizq
'패스트캠퍼스) ios 개발 챌린지' 카테고리의 다른 글
[패스트캠퍼스 수강 후기] IOS개발강의 100% 환급 챌린지 23회차 미션 (0) | 2020.11.24 |
---|---|
[패스트캠퍼스 수강 후기] IOS개발강의 100% 환급 챌린지 22회차 미션 (0) | 2020.11.23 |
[패스트캠퍼스 수강 후기] IOS개발강의 100% 환급 챌린지 20회차 미션 (0) | 2020.11.21 |
[패스트캠퍼스 수강 후기] IOS개발강의 100% 환급 챌린지 19회차 미션 (0) | 2020.11.20 |
[패스트캠퍼스 수강 후기] IOS개발강의 100% 환급 챌린지 18회차 미션 (0) | 2020.11.19 |