Swift
[Swift] 구조체(struct) 공부하기!
ji_iin
2021. 8. 29. 15:01
처음 swift를 접했을 때 struct가 뭐지? 자바를 먼저 썼던 나는 class랑 뭐가 다르지 하며 궁금해했는데
공부를 해보니 사용법은 거의 유사하나 성능 및 쓰임새가 다른데,
간략히 설명하면 ( Pingu님 블로그 정리자료 참고 )
공통점
1. 둘 다 값을 저장할 수 있는 프로퍼티를 선언할 수 있으며
2. 생성자를 사용할 수 있고,
차이점
- Class는 참조 타입이라 같은 클래스의 인스턴스 변수를 선언하고 값을 할당한 후 하나의 값을 변경하면 같은 참조를 한 변수도 변경된다.
- Struct는 값 타입이며 새로운 변수를 할당할 때 마다 새로운 구조체가 할당된다. ( 각각 값이 존재해서 영향을 미치지 X )
구조체는 그럼 어떻게 사용할까?
설명은 주석을 참고해주세요 !
struct Town {
//변수
let name: String
var city: [String]
var citizens: [String: Int]
//생성자
init(name: String, city: [String], citizens: [String: Int]){
//self로 구조체의 변수를 간단히 접근
self.name = name
self.city = city
self.citizens = citizens
}
//함수
func welcome(){
print("Welcome to \(name) !")
}
}
var Gyeonggi = Town(name: "경기도", city: ["성남시", "파주시", "수원시", "안산시"], citizens: ["홍길동": 20, "박듀듀": 19, "김옥수수": 29])
//Gyeonggi.name = "서울시" let으로 선언했기 때문에 값이 변하지 않으므로 error
//구조체의 배열 프로퍼티에 값을 추가할 수도 있다!
Gyeonggi.city.append("용인시")
Gyeonggi.citizens["최니니"] = 24
print(Gyeonggi)
// Town(name: "경기도", city: ["성남시", "파주시", "수원시", "안산시", "용인시"], citizens: ["김옥수수": 29, "최니니": 24, "홍길동": 20, "박듀듀": 19])
print(Gyeonggi.welcome())
//Welcome to 경기도 !