struct (구조체)
특징
- Int, Double, String 등 기본 자료형은 모두 구조체이다.
- public struct Int
- public struct Double
- public struct String
- public struct Array<Element>
- 정의한 모듈을 가져오는 다른 모듈의 소스파일에서도 사용 가능하다.
- nil도 구조체이다.
- Memberwise Initializer가 자동으로 만들어진다.
- Array, Dictionary, Set은 모두 Generic Structure이다.
- 구조체/enum의 인스턴스는 값(value) 타입, 클래스의 인스턴스는 참조(reference)타입이다.
- 구조체는 상속이 불가능 하다.
class, Struct 소스 비교하기
Struct : Init()메서드가 자동으로 만들어 지기 때문에 따로 만들어주지 않아도 된다.
//struct코드 사용예시
struct Man{
var age : Int
var height : Double
func cho(){
print(age, height)
}
}
let sun = Man(age:20, height:70) //인스턴스 생성
print(sun.age)//20 , 프로퍼티 접근, 출력
print(sun.height)//70.0
sun.cho()//20 70.0
class : init()메서드를 필수로 만들어 줘야한다.
//클래스 코드 사용예시
class Man1{
var age1 : Int
var height1 : Double
func cho1(){
print(age1,height1)
}
init(age1:Int, height1:Double){
self.age1 = age1
self.height1 = height1
}
}
let moon = Man1(age1:21,height1:71)
moon.cho1()//21, 71.0
클래스 내에서 구조체 사용하기
- 사용 예시
- 클래스 내부 소스
- var 변수 = Man( ) //구조체 받아오기
- print(인스턴스명.변수[클래스선언].출력 프로퍼티명[구조체 내부] )
//간단예시 1
struct Man{
var age : Int = 25
}
class Girl{
var some = Man() //클래스 내에서 구조체 받아오기
var height : Double = 165
}
let kim = Girl() //인스턴스 생성
print(kim.some.age) //인스턴스.class프로퍼티.struct프로퍼티
//예시 2
struct Man{
var age : Int = 10
var height : Double = 20
func cho(){
print(age, height)
}
}
let sun = Man(age:20, height:70)
print(sun.age)//20
print(sun.height)//70.0
sun.cho()//20 70.0
//------------------------------------------
class Man1{
var man = Man() //클래스 내에서 구조체 받아오기
var age1 : Int
var height1 : Double
func cho1(){
print(age1,height1)
}
init(age1:Int, height1:Double){
self.age1 = age1
self.height1 = height1
}
}
let moon = Man1(age1:21,height1:71)
moon.cho1()//21, 71.0
print(moon.man.height) //20.0 , 클래스 내에서 받아온 구조체 출력
인덕대학교 한성현 교수님의 강의를 참고하였습니다.
youtube - smile Han
'iOS_Swift > 문법 정리' 카테고리의 다른 글
Swift - 옵셔널 체이닝(Optional Chaining) (0) | 2022.05.14 |
---|---|
swift - 클래스, 구조체, 열거형 비교 (0) | 2022.05.12 |
Swift - 열거형(enum) (0) | 2022.05.10 |
Swift - protocol(프로토콜), Delegate (0) | 2022.05.09 |
Swift - 접근제어(access control, access modifier) (0) | 2022.05.08 |