구조체

손호준·2022년 6월 9일
0

swift

목록 보기
5/12

구조체

정의 문법

스위프트에서 대부분의 타입은 구조체로 이루어져있음. 구조체는 값 타입이며, 타입 이름은 대문자 camel case를 사용하여 정의. 프로퍼티는 구조체 안에 들어가는 인스턴스 변수, 메서드는 구조체 안에 들어가는 함수.

struct 이름 {
	/*구현부*/
 }

프로퍼티 및 메서드 구현

struct Sample {
	///인스턴스 프로퍼티///
	//가변 프로퍼티
	var mutableProperty: Int = 100

	//불변 프로퍼티
	let immutableProperty: Int = 100

	//타입 프로퍼티
	static var typeProperty: Int = 100

	///인스턴스 메서드///
	func instanceMethod() {
		print("instance method")
	}

	///타입 메서드///
	static func typeMethod() {
		print("type method")
	}
}

구조체 사용

//가변 인스턴스 생성
var mutable: Sample = Sample()

mutable.mutableProperty = 200

//불변 프로퍼티는 인스턴스 생성 후 수정 불가
//mutable.immutableProperty = 200

//불변 인스턴스
let immutable: Sample = Sample()

//불변 인스턴스는 아무리 가변 프로퍼티라도 인스턴스 생성 후에 수정불가
//immutable.mutableProperty = 200
//immutable.immutableProperty = 200

//타입 프로퍼티 및 메서드
Sample.typeProperty = 300
Sample.typeMethod() //type method
//인스턴스에서는 타입 프로퍼티나 타입 메서드 사용불가
//타입자체(Sample)에서 사용해야함
//mutable.typeProperty = 400
//mutable.typeMethod()

구조체 사용 예시

struct SmartPhone {
	var iphone: String = "11"
    
    let maker: String = "apple"
    
    static var os: String = "ios"
    
    func launchIphone() {
    	print("new iphone \(self.iphone)")
    }
    
    static func launchIpad() {
    	print("new ipad!")
    }
}

var hoson: SmartPhone = SmartPhone()
hoson.iphone = "13"
hoson.launchIphone() //new iphone 13!

let nylonmask: SmartPhone = SmartPhone()
nylonmask.launchIphone() //new iphone 11!

//타입 메서드 사용(타입자체인 SmartPhone에서 사용)
SmartPhone.launchIpad()
profile
Rustacean🦀/Data engineer💻

0개의 댓글