야곰의 스위프트 프로그래밍
    • 01
      스위프트 시작하기
    • 시작 전 필독사항
      이름짓기, 콘솔로그, 문자열 보간법
    • 02
      문법
    • 상수와 변수
      기본 데이터 타입
      Any, AnyObject, nil
      컬렉션 타입
      함수 기본
      함수 고급
      조건문
      반복문
      옵셔널
      옵셔널 값 추출
      구조체
      클래스
      열거형
      값 타입과 참조 타입
      클로저
      다양한 클로저표현
      프로퍼티
      프로퍼티 감시자
      상속
      인스턴스의 생성과 소멸
      옵셔널 체이닝과 nil 병합 연산자
      타입캐스팅
      assert와 guard
      프로토콜
      익스텐션
      오류처리
    • 03
      고차함수 활용
    • 고차함수
    • 04
      마무리
    • 더 알아보기
    구조체
    배우기
    02 문법
    구조체

    정의 문법

    스위프트 대부분의 타입은 구조체로 이루어져 있습니다. 구조체는 값 타입입니다. 타입이름은 대문자 카멜케이스를 사용하여 정의합니다.

    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
    
    // 인스턴스에서는 타입 프로퍼티나 타입 메서드를
    // 사용할 수 없습니다
    // 컴파일 오류 발생
    //mutable.typeProperty = 400
    //mutable.typeMethod()
    

    관련문서

    실습 내용
    • SmartPhone 이라는 이름의 구조체를 정의하고, 여러 프로퍼티와 메서드를 구현해 봅시다.
    • SmartPhone의 인스턴스를 생성하고 프로퍼티 값을 변경해보고 메서드를 호출해봅시다.


    질문하기