(Swift 프로그래밍 by 야곰)# 3

희희희·2021년 4월 27일
0

Swift

목록 보기
3/3

옵셔널

변수 또는 상수의 값이 nil일 수도 있다는 것을 의미.
(옵셔널 변수 또는 상수가 아니면 nil을 할당할 수 없음)

func checkOptionalValue(value optionalValue: Any?) {
    switch optionalValue {
    case .none:
        print("Nil")
    case .some(let value):
        print("\(value)")
    }
}

옵셔널 바인딩

var myName: String? = "Hee"

if let name = myName {
    print("My name is \(myName)")
} else {
    print("nil")
}

구조체(값 타입)

대문자 카멜케이스 이용
1

struct Student {
    
    var name: String = "unknown"
    
    var grade: String = "fresh"
    
    static func selfIntroduce() {
        print("I'm student.")
    }
    
    func selfIntroduce() {
        print("I'm \(name). And I'm \(grade)")
    }
}

Student.selfIntroduce()

var hee: Student = Student()
hee.name = "Hee"
hee.grade = "freshm"
hee.selfIntroduce()

2

struct Hee {
    
    var name: String = "Hee"
    
    var age: Int = 99
    
    static func personType() {
        print("Hee is a person.")
    }
    
    func information() {
        print("My name is Hee. And I'm 99.")
    }
}

var person: Hee = Hee()
Hee.personType()
person.information()

클래스(참조 타입)

구조체와 달리 클래스의 인스턴스는 참조 타입이므로 클래스의 인스턴스를 let으로 선언해도 내부 프로퍼티 값 변경 가능.

class Hee {
    
    var name: String = "Hee"
    var age: Int = 99
    var weight: Float = 99.9
    
}

var student: Hee = Hee()
let teacher: Hee = Hee()

student.name = "nana"
student.name // nana
teacher.name = "Ji"
teacher.name // Ji

열거형

enum Year {
    case dec, jan, feb
    case mar, apr, may
    case jun, jul, aug
    case sep, oct, nov
    
    func printMessage() {
        switch self {
        case .dec, .jan, .feb:
            print("Winter")
        case .mar, .apr, .may:
            print("Spring")
        case .jun, .jul, .aug:
            print("Summer")
        case .sep, .oct, .nov:
            print("Fall")
        }
    }
}

Year.dec.printMessage()
profile
iOS 어플 개발 연습

0개의 댓글