문법

[iOS] 2025.03.18 문법(struct)

ioskkt 2025. 3. 18. 15:24

struct

  • 연관된 상태는 변수, 상수에 저장하고 행동은 함수를 정의한 후 그룹화하여 데이터타입으로 사용할 수 있음.
  • 프로퍼티 : 구조체, 클래스 안에 있는 변수, 상수
  • 메소드 : 구조체, 클래스 안에 있는 함수
  • 구조체의 인스턴스를 생성하여 사용할 수 있음.
  • 구조체 안에서 사용되는 변수와 상수인 프로퍼티에는 default 값을 정해줄 수 있음.
  • Memberwise Initializer 를 제공함.
  • 직접 init을 정의하지 않아도 모든 프로퍼티의 초기화를 자동으로 생성해주는 기능.
  • 구조체를 사용하여 만들어진 인스턴스는 Value Type임.
  • 구조체의 인스턴스는 값이 복사되므로, 서로 다른 값으로 처리하게 됨. *
  • 메소드에서 프로퍼티를 변경하려면 mutating 키워드를 사용해야 함.
  • 상속 불가능.
  • 인스턴스를 let으로 만들면 내부 프로퍼티를 변경할 수 없음.
    프로퍼티를 변경하려면 var로 만들어야 함.

struct 정의, 사용하는 방법

  • 기본 정의
// 기본 정의 방법
struct 구조체이름 {
    // 프로퍼티 선언
    // 함수 구현
    
    // ⭐️ class와 다르게 init을 만들지 않아도 자동으로 만들어주어서 생략해도 됩니다!
}

// 사용 방법
// 구조체이름() 를 사용하면 됩니다.
// ()안에 구조체에서 사용하는 프로퍼티들의 내용을 채워주어야 합니다/
let 상수이름 = 구조체이름()

 

  • 사용방법
struct Person {
    var name: String
    var age: Int = 0
    
    func introduce() {
        print("안녕하세요 \(name)입니다. 저는 \(age)살 입니다")
    }
    
    mutating func happyNewYear() {
        age += 1
    }
}

var me = Person(name: "Brody") // struct의 프로퍼티에 기본값을 주었기 때문에 생략 가능
let friend = Person(name: "감자", age: 5)

me.age // me의 age 프로퍼티
me.name // me 의 name 프로퍼티
me.introduce() // me 의 introduce 함수를 호출합니다.
                             // 출력 값 : 안녕하세요 Brody입니다. 저는 0살 입니다
me.happyNewYear()
me.introduce()     // 안녕하세요. Brody입니다. 저는 1살 입니다
friend.introduce() // // 안녕하세요. 감자입니다. 저는 5살 입니다

'문법' 카테고리의 다른 글

[iOS] 2025.03.21 문법(메소드)  (0) 2025.03.24
[iOS] 2025.03.18 문법(프로퍼티)  (0) 2025.03.18
[iOS] 2025.03.18 문법(class, init)  (0) 2025.03.18
[iOS] 2025.03.18 문법(인스턴스)  (0) 2025.03.18
[iOS] 2025.03.13 문법(열거형)  (0) 2025.03.13