일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- forEach
- SwiftUI
- 구름톤 유니브
- 대표
- 기초문법
- 앱개발
- 프로토콜
- 네트워크
- struct
- 협업
- 실습
- AppStore
- ios
- async
- 반응형
- 이론
- 스트럭트
- collectionview
- RxSwift
- swift
- 디자인 패턴
- CS
- uikit
- 학과별커뮤니티
- 딕셔너리
- WeatherKit
- 세종대학교
- MVVM
- 토이프로젝트
- mvc
- Today
- Total
스윞한 개발자
Swift 기초문법 - 스트럭트 mutating/메서드 본문
구조체 Struct에 대해 좀 더 자세히 알아보겠습니다!
mutating이란?
'mutating'은 Swift에서 구조체('struct') 내부에서 메서드가 자신을 수정할 수 있는지를 나타내는 특별한 키워드입니다.
기본적으로 구조체(Struct)와 열거형(enum)은 값 타입이므로 해당 인스턴스의 프로퍼티를 변경하려면 메서드가 'mutating'으로 표시되어야 합니다.
'mutating' 키워드를 사용하면 구조체 내부에서 프로퍼티의 값을 변경하거나, 다른 메서드를 호출하여 자신을 수정할 수 있습니다. 구조체가 값 타입이지만 메서드 내부에서 상태를 변경하거나 특정 작업을 수행할 수 있도록 허용해줍니다.
struct Point {
var x: Int
var y: Int
mutating func moveBy(x deltaX: Int, y deltaY: Int) {
x += deltaX
y += deltaY
}}
var point = Point(x: 10, y: 20)
print("Before move: \(point)") // Before move: Point(x: 10, y: 20)
point.moveBy(x: 5, y: 5)
print("After move: \(point)") // After move: Point(x: 15, y: 25)
클래스는 값을 변경가능하지만 스트럭트는 불가능합니다.
스트럭트는 값을 그냥 출력하는것은 문제가 되지 않지만, 스트럭트가 가지고 있는 값을 변경하려고 하는 경우에는 에러가 발생합니다.
* 클래스는 참조 타입. 스트럭트는 값 타입.
스트럭트 메소드
스위프트에서 구조체는 메소드를 가질 수 있습니다.
구조체의 메소드는 해당 구조체 내에서 특정 작업을 수행하는 함수입니다.
메소드는 구조체 내부의 속성에 액세스할 수 있으며, 구조체의 인스턴스를 통해 호출됩니다.
struct MyStruct {
var value: Int
func myMethod() {
// 메소드 구현
// value 속성에 접근 가능
}}
메소드를 호출하기 위해 구조체의 인스턴스를 생성해야 합니다.
생성된 인스턴스를 통해 메소드를 호출할 수 있습니다.
var myInstance = MyStruct(value: 10) // 구조체 인스턴스 생성
myInstance.myMethod() // 메소드 호출
메소드는 구조체의 속성에 접근하거나 조작하는 데 사용될 수 있으며, 필요에 따라 반환 값을 가질 수도 있습니다.
struct Rectangle {
var width: Double
var height: Double
func calculateArea() -> Double {
return width * height
}}
var rect = Rectangle(width: 5.0, height: 3.0)
let area = rect.calculateArea() // 메소드 호출 및 반환 값 사용
print(area) // 출력: 15.0
이상으로!
이번 포스팅은 구조체에 대해 더 자세히 알아보는 시간이었습니다.
꾸벅
'Swift 이론' 카테고리의 다른 글
Swift 기초 문법 - 별칭/typealias, Set (0) | 2024.01.23 |
---|---|
Swift 기초문법 - 프로토콜 (0) | 2024.01.23 |
Swift 기초문법 - 에러 (0) | 2024.01.23 |
Swift 기초문법 - 파이널 클래스 (2) | 2024.01.23 |
Swift 기초문법 - 딕셔너리 (2) | 2024.01.23 |