๐ถ if let ๊ณผ guard let
์ค๋์ ์ด ๋์ ์ฐจ์ด์ ์ธ์ ์ด๋ค ๊ฑธ ์ ํํ์ฌ ์ฌ์ฉํ๋ฉด ์ข์์ง
๊ณต๋ถํด๋ณด์์ต๋๋ค.
๐ค if let
let nickName: String? = "์ค๋จ"
if let nonOptionalNickname = nickName {
print(nonOptionalNickname)
} else {
print("๋๋ค์์ด nil ๊ฐ์
๋๋ค.")
}
if let ์ ์์
๋ฐฉ์(?) ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
1. nickName์ด nil์ธ์ง ์ฒดํฌํ๋ค.
2. nil์ด ์๋๋ผ๋ฉด nonOptionalNickname์ด๋ผ๋ ์์์ ์ธ๋ํ๋ nickName ๊ฐ์ ๋์
ํ๋ค.
-> ์ด ๋ nonOptionalNickname์ ํ์
์ String์ด์ง๋ง nickName์ ํ์
์ ์ฌ์ ํ String? ์ด๋ค
3. nil์ด๋ผ๋ฉด else ๊ตฌ๋ฌธ์ผ๋ก ์ด๋ํฉ๋๋ค.
โ ์ฌ๊ธฐ์ ์ฃผ์ํด์ผํ ์
nonOptionalNickname์ด๋ผ๋ ์์๋ if ๋ฌธ ๋ด์์๋ง ์ฌ์ฉ์ด ๊ฐ๋ฅํฉ๋๋ค.
โ๏ธ ๊ฟํ
let nickName: String? = "์ค๋จ"
if let nickName = nickName {
print(nickName)
} else {
print("๋๋ค์์ด nil ๊ฐ์
๋๋ค.")
}
์ด๋ ๊ฒ ๋์ผํ ์ด๋ฆ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ด๋ ๊ฒํ๋ฉด if๋ฌธ ๋ด์์ ์ฌ์ฉ๋๋ nickName์ ์ธ๋ํ๋ ํ์
์
๋๋ค.
ํ์ง๋ง ์ฌ์ ํ if๋ฌธ์ ๋ฒ์ด๋๋ฉด ์ต์
๋ ํ์
์
๋๋ค. ์ฃผ์ ! ( ๊ธฐ์กด ์ธ์คํด์ค์ ํ์
์ด ๋ฐ๋๋๊ฒ ์๋์ด์ ~ )
๐ธ guard let
์ด๋ฆ๋ง ๋ด๋ ๋ฉ๋๋ฌ์ง๋๋ค. ๋ง ๊ทธ๋๋ก guard๋ฅผ ์น๋ ์น๊ตฌ์
๋๋ค.
์ฌ๊ธฐ๋ฅผ ํต๊ณผํ์ง ๋ชปํ๋ฉด ์ด ๋ฐ์ผ๋ก ๋ชป๋ด๋ ค๊ฐ๋ค ์ด๋ฐ ๋๋์ ๊ฐ์ง ๊ตฌ๋ฌธ์
๋๋ค.
ํผ์๋ง๋ค๊ธฐ ํจ์๋ฅผ ์์๋ก ๋ค์ด๋ณด๊ฒ ์ต๋๋ค
func makePizzaForMe(money: Int?) {
guard let money = money else {
return
}
makeDough()
topping()
bakePizza()
let change = calculateChange(price: 23000, customerMoney: money)
}
func calculateChange(price: Int, customerMoney: Int) -> String {
return "\(customerMoney - price)"
}
์ ํผ์๋ฅผ ๋ง๋๋ ํจ์๋ฅผ ์ ์ด๋ณด์์ต๋๋ค.
ํผ์๋ฅผ ๋ง๋ค ๋๋ ์ฌ๋ฌ ๋จ๊ณ๊ฐ ํ์ํฉ๋๋ค. ๋์ฐ๋ฅผ ๊น๊ณ , ํ ํ์ ์น๊ณ , ๋นต์ ๊ตฌ์์ผํฉ๋๋ค !
ํ์ง๋ง ... ! ๋์ ๋ฐ์ง ๋ชปํ๋ค๋ฉด ?! ์ด ๋ฐ์ ํจ์๋ค์ ์คํ์ํค๋ฉด ์๋๊ฒ ์ฃ ? ์๋๋ฉด ๊ฐ๊ฒ์ ์ํด์ด๊ธฐ ๋๋ฌธ์
๋๋ค.
๊ทธ๋์ ์ฐ๋ฆฌ๋ ์ ์๋์๊ฒ ๋์ ๋ฐ์๋์ง ํ์ธํด๋ณด๊ณ ๋์ ์๋ ํจ์๋ค์ ์คํ์ํค๊ณ ์ถ์ต๋๋ค.
์ด๋ด ๋ guard๋ฌธ์ ์ ์ฉํ๊ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค !
์ต์
๋ ํ์
์ผ๋ก ์ ๋ฌ๋ ๋์ ๋ง์น ๋๋ดํฌ๋ฅผ ๋ฐ์ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค.
๋๋ดํฌ ์์๋ ๋์ด ์์ ์๋ ์์ ์๋ ์์ต๋๋ค ... ๋๋ดํฌ๋ฅผ ํ๋ฒ ๊น๋ด
์๋ค !
guard ๋ฌธ์ ํตํด money ๊ฐ์ด nil์ธ์ง ์๋์ง ์ฒดํฌํด์ nil์ด๋ผ๋ฉด return ์์ผ๋ฒ๋ฆฝ๋๋ค.
( ์๋์ ์ง์ผ๋ก ๋ฆฌํด... ์ฃ์กํฉ๋๋ค )
์๋์ค๊น์ง ๋ด๋ ค๊ฐ์ง ์์ต๋๋ค !
๋ฌผ๋ก else๋ฌธ ๋ด์์ return ํ๊ธฐ ์ ์ ๋ค๋ฅธ ์ฒ๋ฆฌ๋ค์ ํ ์ ์์ต๋๋ค.
if let ๊ณผ๋ ๋ค๋ฅด๊ฒ ์ฌ๊ธฐ์์ money๋ guard ๊ตฌ๋ฌธ ๋ฐ์์๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ทธ money๋ ๊ธฐ์กด money ํ์
์ ์ธ๋ํ๋ ํ์
์
๋๋ค.
calculateChange ํจ์์์ customerPrice๋ผ๋ ๋งค๊ฐ๋ณ์์ ํ์
์ด Int์ธ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
guard let์ ํตํด ์ธ๋ํ ๋์๊ธฐ ๋๋ฌธ์ money๋ Intํ์
์ผ๋ก ๋ฐ๋์๊ณ ์ ํจ์์ ์ ๋ฌ์ธ์๋ก ๋ค์ด๊ฐ ์ ์๊ฒ ๋์์ต๋๋ค ๐
๊ฝค๋ ๋ง์๋๋ ์์์ธ ๊ฒ ๊ฐ๋ค์ ๐ ํ๋ณต
'iOS > swift' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[swift] @discardableResult ํค์๋ (0) | 2022.04.16 |
---|---|
[swift] Collection - indices (0) | 2022.04.12 |
[Swift] class / struct - initializer - ์กฐ๊ธ ๋ ํธํ๊ฒ ์์ฑํ๋ ๋ฒ (0) | 2022.01.21 |