[swift] 기본문법(2)
ios/swift

[swift] 기본문법(2)

import UIKit

//5. 조건문
//a. if else
let age = 23
if age < 19 {
    print("19세 미만입니다.")
} else if age < 25 {
    print("25세 미만입니다.")
} else {
    print("25세 이상입니다.")
}

//b. switch
let color = "green"
switch color {
case "blue":
    print("파란색입니다.")
case "green":
    print("초록색입니다.")
case "red":
    print("빨간색입니다.")
default:
    print("찾는 색상이 없습니다.")
}

// 범위도 가능
let temperature = 9

// ... 범위 연산자는 첫값과 끝값 모두 포함합니다. -20...9 === -20 <= x <= 9
switch temperature {
case -20...9:
    print("추워요")
case 10...14:
    print("살짝 쌀쌀해요")
case 15...25:
    print("선선해요")
default:
    print("이상기후..")
}


// 6. 반복문
// 1. for-in
let array1 = [1,3,5,7]
var index = 1
for i in array1 {
    print("\(index)번째 수는 \(i)")
    index+=1
}

// 2. while
var number = 5
while number < 10 {
    number+=1
}
number

// 3. repeat-while
var x=6
repeat {
    x+=2
} while x<15
print(x) // 16


//7. optional
/*
 nil : 값이 없음
 타입뒤에 ?를 붙이면 값이 없을 수도 있다는 걸 인식하고 nil로 인식
 */
var name: String? // 기본값 nil
var optionalName: String? = "Gunter"
//var requiredName: String = nil --> 타입이 정확히 명시된 경우는 nil 사용 불가

// optional binding
// 1. 명시정 해제
// a. 강제해제
var number2: Int? = 3
print(number2) // Optional(3) => 타입을 int로 바꾸
print(number2!) // 3. ---> !를 붙으면 optional을 강제로 해제할 수 았지만 매우 위험 ---> nil 강제해제시 에러

// b. 비강제해제
if let result = number2 {
    print(result)
} else {
    print("해제안됨")
}
// if else 구문으로 optional 을 해제할 경우 그 변수를 if else 구문 내에서만 사용 가능

// c. guard 구문으로 해제 => 뒤에서

// 2. 컴파일러에 의한 자동 해제
let value: Int? = 6
if value == 6 {
    print("value가 6입니다.")
} else {
    print("value가 6이 아닙니다.")
}

// 3. optional의 묵시적 해제
let string = "12"
var stringToInt: Int! = Int(string)
print(stringToInt + 1)
반응형

'ios > swift' 카테고리의 다른 글

[swift] 기본문법(6)  (0) 2021.11.09
[swift] 기본문법(5)  (0) 2021.11.08
[swift] 기본문법(4)  (0) 2021.11.07
[swift] 기본문법(3)  (0) 2021.11.06
[swift] 기본문법(1)  (0) 2021.11.06