Swift/Swift-Basica

Swift (7) - struct & enum

peter.j 2022. 8. 20. 13:47

1. struct (구조체)

1) struct 정의 및 객체 생성 예시

/* struct 정의 */
struct SomeName {
	var property1: Property1
    var property2: Property2
    
    func method1() { }
}

/* 객체 생성 */
var instance1 = SomeName(property1 : someProperty1, property2 : someProperty2)

 

 

2) struct의 특징

상속되지 않는다.

struct는 상속을 사용할 수가 없습니다.

 

생성자가 없다.

struct 내부 프로퍼티들을 정의하면, 자동으로 해당 프로퍼티들을 모두 포함하는 생성자가 정의됩니다.

즉, 생성자에 대한 코드가 자동으로 생성되기에 init 정의가 없더라도 위 코드의 객체 생성부처럼 파라미터를 포함해 객체를 생성합니다.

 

할당 연산이 다르다.

가장 특이한 부분입니다.

var instance1 = SomeStruct(name : "peter")

var instance2 = instance1
instance2.name = "j"

var isEqual = instance1.name == instance2.name // false

위와 같이 작성할 경우, 대부분의 객체지향 언어의 할당 개념은 instance2에 instance1의 메모리 주소가 전달됩니다.

즉, instance2는 instance1의 참조값을 가지게 됩니다.

그러므로 instance2의 name프로퍼티를 수정하게 되면, instance1의 name 프로퍼티 역시 수정되는 것이 자연스럽습니다.

 

하지만 위 코드와 같이 isEqual은 false 값을 할당받게됩니다.

이는 struct가 참조를 하지 않는다는 특징때문입니다.

struct의 할당은 참조값의 할당이 아니라, 객체의 복사와 같은 역할을 합니다.

 

 

 

2. enum (열거형)

1) enum의 정의

/* 방법 1 */
enum Number {
    case One
    case Two
    case Three
}

/* 방법 2 */
enum Number : Int {
    case One = 1
    case Two = 2
    case Three = 3
}

var one = Number.One // "One"
var two = Number.Two.rawValue // 2

enum은 위와 같이 정의할 수 있고, 방법 2로 정의할 경우 할당된 값에 rawValue라는 예약어를 통해 접근할 수 있습니다.

 

 

 

참고

https://www.devkuma.com/docs/swift/%EA%B5%AC%EC%A1%B0%EC%B2%B4-%EC%97%B4%EA%B1%B0%ED%98%95-%ED%8A%9C%ED%94%8C/

 

Swift 입문 | 구조체, 열거형, 튜플

개발 지식 공유

www.devkuma.com

 

사업자 정보 표시
1 | g | asdf | 사업자 등록번호 : 123-12-12345 | TEL : 010-111-1111 | Mail : asdf@gmail.com | 통신판매신고번호 : 호 | 사이버몰의 이용약관 바로가기

'Swift > Swift-Basica' 카테고리의 다른 글

Swift (8) - 함수 및 클로저  (0) 2022.08.20
Swift (6) - Array & Dictionary  (0) 2022.08.20
Swift (5) - Class  (0) 2022.08.19
Swift (4) - 함수  (0) 2022.08.19
Swift (3) - 제어구문  (0) 2022.08.19
Swift (2) - 값, 변수, 연산  (0) 2022.08.19