도슐랭스타

iOS - 연산자와 옵셔널 본문

iOS

iOS - 연산자와 옵셔널

도도.__. 2024. 9. 25. 16:47

swift에서 "x++"이나 "x--"가 없음.

붕어빵틀이 클래스이고 틀로 찍어낸 붕어빵을 인스턴스라고 한다.

클래스와 인스턴스의 관계

  1. 클래스 (붕어빵틀)
    • 객체를 만들기 위한 템플릿 또는 청사진입니다.
    • 객체가 가져야 할 속성(데이터)과 메소드(기능)를 정의합니다.
    • 실제 메모리를 차지하지 않습니다.
  2. 인스턴스 (붕어빵)
    • 클래스를 바탕으로 실제로 생성된 객체입니다.
    • 클래스에서 정의한 속성과 메소드를 가지고 있습니다.
    • 실제 메모리를 차지합니다.

비유 설명

  • 붕어빵틀 (클래스)
    • 붕어 모양을 가지고 있습니다.
    • 크기와 형태가 정해져 있습니다.
    • 여러 번 사용할 수 있습니다.
  • 붕어빵 (인스턴스)
    • 붕어빵틀로 만들어진 실제 붕어빵입니다.
    • 틀의 모양과 크기를 그대로 가집니다.
    • 각각의 붕어빵은 서로 다른 내용물(팥, 크림 등)을 가질 수 있습니다.

swift는 for in 문을 사용한다.
for 문 다음의 실행 코드가 한 줄이라도 괄호({})를 필수적으로 사용한다.

for i in 0..<10 {
    print("\(i+1) : dodo")
}

 

 

자동으로 break가 들어가 있음.

where절로 부가적인 조건을 추가할 수 있다.

var x : Int = 10
print(x)
var y : Int? = 20
print(y)

optional 변수로 저장하면 출력값이 Optional안에 들어간다.

"!"(느낌표)를 사용하면 Optional 변수를 사용할 수 있다.

초깃값을 주지 않으면 쓰레기값이 들어간 상태가 됨.

Optional 변수의 초깃값이 없으면 "nil"(값이 없다)이라고 출력된다.

Optional의 값이 없을 때 풀어달라고 하면 문제(crash, 죽음)가 된다.

Optional 변수는 풀어서(unwrapping) 연산을 해야한다.
연산 후에는 다시 Optional로 들어감.

Optional 변수는 그대로 대입도 못함. 꼭 풀어야(unwrapping) 함.

 

"x!=nil"처럼 붙여서 써버리면 forced unwrapping인 줄 알기 때문에 띄어쓰기를 해줘야함.

띄어쓰기를 하면 문제가 없음.

optional binding으로 점점 간결하게 unwrapping을 할 수 있음.

let을 매번 써줘야 함.

이렇게 간결하게 수정할 수 있음.

"!"(느낌표)를 암묵적인 언래핑(implicitly unwrapped) 옵셔널 이라고 한다.
자동으로 풀어줌.

자동으로 풀어주기 때문에 바로 연산을 해도 됨.

풀어줄 때 "??"을 nil-coalescing operator (nil병합연산자) 라고 함.
x가 nil이면 default(기본값)를 1로 한다는 의미임.
nil이 아니면 x가 자동으로 풀림.

 

1. 옵셔널 바인딩 (if let / guard let)

let name: String? = "John"

if let unwrappedName = name {
    print("Hello, \(unwrappedName)!")
} else {
    print("Name is nil")
}

// 또는

guard let unwrappedName = name else {
    print("Name is nil")
    return
}
print("Hello, \(unwrappedName)!")

2. 옵셔널 체이닝

struct Person {
    var residence: Residence?
}

struct Residence {
    var numberOfRooms = 1
}

let john = Person()

if let roomCount = john.residence?.numberOfRooms {
    print("John's residence has \(roomCount) room(s).")
} else {
    print("Unable to retrieve the number of rooms.")
}

3. nil 병합 연산자 (??)

let name: String? = nil
let greeting = "Hello, " + (name ?? "Guest")
print(greeting) // "Hello, Guest"

4. 암시적 언래핑 옵셔널

var assumedString: String! = "An implicitly unwrapped optional string."
let implicitString: String = assumedString // 명시적 언래핑 불필요

5. 강제 언래핑 (!)

let forcedString: String = assumedString!

 

 

출처 : https://youtube.com/@smilehan8416?si=b54rQLAJbItDehK9

 

 

 

 

반응형

'iOS' 카테고리의 다른 글

iOS - first class object, first class citizen(1급 객체, 1급 시민)  (0) 2024.10.14
iOS - 함수(2)  (0) 2024.10.14
iOS - 함수(1)  (0) 2024.10.04
iOS-2차시  (0) 2024.09.11
iOS-OT  (0) 2024.09.04
Comments