HIT해

[Swift 기초문법 - 20] Struct Method 본문

Swift/Swift 기초문법

[Swift 기초문법 - 20] Struct Method

힛해 2024. 7. 16. 04:07
728x90

Swift에서 Struct는 데이터와 관련된 기능을 묶어 정의하는 데 사용됩니다. Struct는 클래스와 유사하지만, 값 타입(value type)으로 동작하며, 상속을 지원하지 않습니다. 이번 포스팅에서는 Swift Struct의 메서드 사용법과 주요 특징들을 예제와 함께 알아보겠습니다.

Struct Method의 기본 사용법

Struct는 인스턴스 메서드와 타입 메서드를 가질 수 있습니다. 인스턴스 메서드는 특정 인스턴스에서 호출되는 메서드이고, 타입 메서드는 Struct 자체에서 호출되는 메서드입니다.

인스턴스 메서드

인스턴스 메서드는 Struct의 인스턴스에서 호출되며, 해당 인스턴스의 속성에 접근할 수 있습니다. 기본적인 사용법은 다음과 같습니다.

struct Person {
    var name: String
    var age: Int

    func description() -> String {
        return "\\(name)은(는) \\(age)살입니다."
    }
}

let person = Person(name: "철수", age: 25)
print(person.description())
// 출력: 철수은(는) 25살입니다.

위 예제에서 description 메서드는 Person 인스턴스의 속성인 name과 age에 접근하여 문자열을 반환합니다.

타입 메서드

타입 메서드는 Struct 자체에서 호출되는 메서드로, static 키워드를 사용하여 정의합니다.

struct Math {
    static func square(_ number: Int) -> Int {
        return number * number
    }
}

let result = Math.square(4)
print(result)
// 출력: 16

위 예제에서 square 메서드는 Math Struct의 타입 메서드로, number 값을 제곱하여 반환합니다.

Struct 메서드의 특징

 

멤버와이즈 이니셜라이저

 

생성자를 만들지 않아도 자동으로 매개변수 넣으라고 설정해준다

 

변경 가능한 인스턴스 메서드

Struct의 인스턴스 메서드에서 인스턴스의 속성을 변경하려면 mutating 키워드를 사용해야 합니다. 이 키워드를 사용하면 메서드 내부에서 속성을 수정할 수 있습니다.

struct Counter {
    var count: Int = 0

    mutating func increment() {
        count += 1
    }
}

var counter = Counter()
counter.increment()
print(counter.count)
// 출력: 1

위 예제에서 increment 메서드는 mutating 키워드를 사용하여 count 속성의 값을 증가시킵니다.

Struct와 클래스의 차이점

  • 값 타입 vs 참조 타입: Struct는 값 타입이고, 클래스는 참조 타입입니다. 즉, Struct의 인스턴스를 변수에 할당하거나 함수에 전달할 때 복사가 이루어집니다.
  • 상속: Struct는 상속을 지원하지 않습니다. 클래스만 상속을 통해 다른 클래스의 속성과 메서드를 확장할 수 있습니다.
  • 메모리 관리: Struct는 값 타입이기 때문에 ARC(Automatic Reference Counting)의 영향을 받지 않습니다.

결론

Swift의 Struct는 데이터와 관련된 메서드를 함께 정의할 수 있는 강력한 도구입니다. 값 타입으로 동작하여 메모리 효율성이 높고, 상속이 필요 없는 경우에 유용하게 사용할 수 있습니다.

'Swift > Swift 기초문법' 카테고리의 다른 글

Extenstion  (0) 2024.08.07
[Swift 기초문법 - 21] 프로토콜  (0) 2024.07.16
[Swift 기초문법 - 19] Set  (0) 2024.07.16
[Swift 기초문법 - 18] Struct mutating  (0) 2024.07.12
[Swift 기초문법 - 17] Error  (0) 2024.07.12