TIL: Swift 기초 (3) 2025.06.18

박춘팔·2025년 6월 18일
0

Swift TIL

목록 보기
3/9
post-thumbnail

구조체

생김새나 느낌은 TS interface 혹은 class와 비슷하다 그런데 Swift에서는 구조체와 클래스 모두 값을 저장하고 조작하는데 사용하는 사용자 정의 데이터 타입 이라고 하니 사용처가 다른 듯 하다.

// 구조체 기본형
struct 구조체이름 {
	// 구조체 변수 및 함수
}

// exam
struct Rectangle {
	var width: Double
    var height: Double
    var area: Double
    
    // 커스텀 이니셜라이져
    init(width: Double, height: Double) {
    	self.width = width
      	self.height = height
      	self.area = width * height
    }
}

//

구조체 속성

구조체에는 2가지 속성이 존재
1. 저장속성 => 값을 실제로 메모리에 저장
2. 계산속성 => 계산을 통해 값 반환 or 설정

struct Rectangle {
  	// 저장속성
	var width: Double
    var height: Double
    
    // 계산속성
    var area: Double {
    	get{
        	// area 값 읽었을때 아래 return 값으로 읽힘
          	return width * height
        }
      	set{
          	// 새로운 값 할당될 시 실행
          	// 외부에서 전달된 값을 사용할때 newValue 사용
          	return height = newValue / width
        }
    }
}

구조체 메서드

구조체 동작을 정의할 수 있고 타입 메서드와 인스턴스 메서드로 나뉜다.

// 인스턴스 메서드는 mutating 키워드 사용
// 타입 메서드는 static 키워드 사용
struct Counter {
	var count:Int = 0
  
  	mutating func increment() {
		count += 1    	
    }
  	
  	// 타입 메서드는 구조체를 생성하지 않고 호출 가능
  	static func shared() -> Counter {
    	return Counter()
    }
}

Counter.shared() // => 정상동작
Counter.increment() // => 오류

var counter = Counter()
counter.increment() // => 정상동작
profile
이것 저것 다해보는 삶

0개의 댓글