Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 딥러닝
- IT연합동아리
- kotiln
- 자바
- utuntu
- ubuntu
- 인공지능
- 빅데이터
- 빅데이터청년캠퍼스
- sending 404
- 소켓통신
- 알고리즘
- ubuntu18.04
- 이것만보면돼
- 넥스터즈
- Android
- clean architecture
- 백준
- cuda-10.2
- 코틀린
- flownet
- 청년인재
- nvcc
- resample2d_cuda
- NEXTERS
- 데이터청년캠퍼스
- 안드로이드
- 머신러닝
- 빅데이터청년인재
- DataBinding Error
Archives
- Today
- Total
보초의 코딩일기장
[Swift 입문] 구조체, 클래스 본문
구조체
스위프트의 대부분은 구조체로 이루어져 있다.
구조체는 값(value)타입이다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | /* 구조체 */ 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") } } | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | // 가변 인스턴스 생성 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() | cs |
var과 let을 구별하여 사용해야 한다.
클래스
클래스는 참조타입이다.
스위프트의 클래스는 다중상속이 되지 않는다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | /*클래스*/ class 이름 { //.. } var mutableReference: Sample = Sample() mutableReference.mutableProperty = 200 // 불변 프로퍼티는 인스턴스 생성 후 수정할 수 없습니다 // 컴파일 오류 발생 //mutableReference.immutableProperty = 200 // 인스턴스 생성 - 참조정보 수정 불가 let immutableReference: Sample = Sample() // 클래스의 인스턴스는 참조 타입이므로 let으로 선언되었더라도 인스턴스 프로퍼티의 값 변경이 가능합니다 immutableReference.mutableProperty = 200 | cs |
구조체와 클래스는 매우 비슷한데 차이점이 몇개 존재한다.
그 중에 하나는 불변 인스턴스로 선언했을 때인데, 구조체로 선언한 Sample은 불변 인스턴스를 만들었을 때 가변 프로퍼티조차 변경할 수 없었지만 클래스로 선언한 Sample은 불변 인스턴스를 만들었을지라도 참조타입이므로 프로퍼티의 값 변경이 가능하다.
'낙서장 > edwith : swift 입문' 카테고리의 다른 글
[Swift 입문] 클래스 vs 구조체/열거형 (0) | 2018.07.17 |
---|---|
[Swift 입문] 열거형 (0) | 2018.07.02 |
[Swift 입문] 옵셔널 (0) | 2018.07.02 |
[swift 입문] 함수 기본, 조건문 (0) | 2018.06.27 |
[swift 입문] Any, AnyObject, nil, 컬렉션타입 (0) | 2018.06.27 |
Comments