Swift랑 친해지기/Swift문법정리

13. 구조체

데브킹덕 2021. 12. 22. 17:04

1.구조체란

- 스위프트 대부분 타입은 구조체로 이루어져 있습니다.

- 구조체는 값(value)타입입니다.

- 타입이름은 대문자 카멜케이스를 사용하여 정의합니다.

 

2. 구조체 문법

- 구조체 정의 : " struct" 키워드 사용

struct 이름{

   /*구현부*/

}

 

*구조체 프로퍼티 및 메서드 구현

*프로퍼티 - 인스턴스 변수, 어떤 타입 안에 들어가있는 변수를 생각하면됨

*메서드 - 구조체 안에 들어있는 함수, 어떤 타입 안에 들어가있는 함수를 생각하면 됨

 

struct Sample{

   // 가변 프로퍼티(값 변경 가능)        

 var mutableProperty: Int = 100

 

   // 불변 프로퍼티(값 변경 불가능)

 let immutableProperty: Int = 100

 

  // 타입 프로퍼티(static 키워드 사용 : 타입 자체가 사용하는 프로퍼티)

static var typeProperty: int = 100

 

// 인스턴스 메서드(인스턴스가 사용하는 메서드)

func instanceMethod(){

  print("instance method")

}

 

// 타입 메서드(static 키워드 사용 : 타입 자체가 사용하는 메서드)

static func typeMethod(){

  print("type method")

  }

}

 

구조체 사용

// 가변 인스턴스 생성

var mutable: Sample = Sample()

 

mutable.mutableProperty = 200

 

// 불변 프로퍼티는 인스턴스 생성 후 수정할 수 없습니다

// 컴파일 오류 발생

// mutable.immutableProperty =200

 

//불변 인스턴스

let immutable: Sample = Sample()

 

// 불변 인스턴스는 아무리 가변 프로퍼티라도

// 인스턴스는 생성 후에 수정할 수 없습니다.

// 컴파일 오류 발생

// immutable. mutableProperty = 200

// immutable.immutableProperty = 200

 

// 타입 프로퍼티 및 메서드

Sample.typeProperty =300

Sample.typeMethod() // type method

 

// 인스턴스에서는 타입 프로퍼티나 타입 메서드를

// 사용할 수 없습니다.

// 컴파일 오류 발생

// mutable.typeProperty = 400

// mutable.typeMethod()

 

3. 학생 구조체 만들어보기

struct Student{

 // 가변 프로퍼티

 var name: String = "unknown"

 

 // 키워드도 '로 묶어주면 이름으로 사용할 수 있습니다.

var 'class' : String = "Swift"

 

// 타입 메서드

static func selfIntroduce(){

  printf("학생타입입니다")

}

 

// 인스턴스 메서드

// self는 인스턴스 자신을 지칭하며, 몇몇 경우를 제외하고 사용은 선택사항입니다.

func selfIntroduce(){

 print("저는 \(self.class)반 \(name)입니다")

  }

}

 

// 타입 메서드 사용

Student.selfIntroduce() // 학생타입입니다

 

//가변 인스턴스 생성

var yagom: Student = Student()

yagom.name = "yagom"

yagom.class = "스위프트"

yagom.selfIntroduce() // 저는 스위프트반 yagom입니다.

 

// 불변 인스턴스 생성

let jina: Student = Student()

 

//불변 인스턴스이므로 프로퍼티 값 변경 불가

// 컴파일 오류 발생

//jina.name = "jina"

jina.selfIntroduce()//저는 Swift반 unknown 입니다.

 

 

 

 

 

 

 

 

 

 

'Swift랑 친해지기 > Swift문법정리' 카테고리의 다른 글

[Swift] readLine()  (0) 2022.06.27
13.구조체  (2) 2022.01.05
12. 옵셔널 추출  (0) 2021.12.22
11.옵셔널  (0) 2021.12.22
10. 반복문  (0) 2021.12.21