μλ νμΈμ μ μΈμ λλ€!π
μ€λμ if letκ³Ό guard letμ μ°¨μ΄μ μ λν΄ νλ² μ 리ν΄λ³΄λ €κ³ ν©λλ€.
Optional νμ μ λ³μλ₯Ό μ¬μ©ν λλ μ΅μ λ λ°μΈλ©μ ν΅ν΄ μμ νκ² κΊΌλ΄μ μ°λκ² μ λ§ μ€μνλ°μ!
νμμ μ λ§ λ¬΄μμμ μΌλ‘ if letκ³Ό guard letμ μ¬μ©νκ³ μμλλ°, μ°Έμ¬μ€μΈ νλ‘μ νΈμμ
νμμ΄ μ΄μ λν μ§λ¬Έμ λ¨κ²¨μ£Όμ΄μ λκ°μ μ°¨μ΄μ μ λν΄ νμ€ν μ 리νκ³ κ°λ €κ³ ν©λλ€π©π»π»
곡ν΅μ
λ¨Όμ , λκ°μ 곡ν΅μ μ λν΄ μ§κ³ λμ΄κ°κ²μ!
if letκ³Ό guard letμ 곡ν΅μ μΌλ‘ μ΅μ λ λ°μΈλ©μ΄λΌλ νΉμ§μ κ°μ§κ³ μμ΅λλ€.
μ΅μ λ(Optional)μ κ°μ΄ μμ μλ, μμ μλ μμμ λνλ΄λ ννμ λλ€.
μ΄λ λ³μλ μμ λ±μ κ°μ΄ μλ€λ κ²μ 보μ₯ν μ μμ, λ€μ λ§ν΄ λ³μ λλ μμμ κ°μ΄ nilμΌ μλ μλ€λ κ²μ μλ―Έν©λλ€.
(μ΅μ λμ λν΄μλ λ€λ₯Έ ν¬μ€ν μμ λ μμΈν λ€λ€λ³΄λλ‘ νκ² μ΅λλ€)
μ΅μ λ κ°μ μΆμΆνλ λ°©μμλ μ΅μ λ λ°μΈλ©, κ°μ μΆμΆ μ΄λ κ² λκ°μ§κ° μλλ°μ,
λ¨Όμ μ΅μ λ κ°μ nilμΈμ§ μλμ§ μ²΄ν¬νκ³ , κ°μ΄ μμΌλ©΄ κ·Έ κ°μ κΊΌλ΄μ€λ μμ ν μΆμΆ λ°©λ²μ΄ μ΅μ λ λ°μΈλ© μ λλ€.
μ¦, μμ νκ² Optionalκ°μ μΆμΆνκΈ° μν΄ μ¬μ©νλ κ²μ΄ if letκ³Ό guard let μ λλ€.
if let
if letμ nilμΌ λμ nilμ΄ μλ λλ₯Ό λλμ΄μ μνλ μ½λλ₯Ό μμ±ν΄μ€ μ μμ΅λλ€.
μμλ‘ μμΈν μ΄ν΄λ³΄λλ‘ ν©μλ€!
μμ μ½λμμ nameμ΄ μ΅μ λ νμ μ λ³μμΈλ°, μ¬κΈ°μ nilμ΄ μλ κ°μ΄ λ€μ΄κ°κ² λλ©΄
if let ꡬ문μ μμ μλ print(myName)μ΄ μ€νλκ³ ,
nameμ΄ nilμΌ κ²½μ°, else ꡬ문μΌλ‘ λμ΄κ°μ print(nil)μ΄ μ€νλλ κ²μ νμΈν μ μμ΅λλ€.
μ 리νμλ©΄, λ¨Όμ nil 체ν¬λΆν°ν΄μ if letκ³Ό else μ€ μ΄λ€ κ΅¬λ¬Έμ΄ μ€νλ κ²μΈμ§ νλ¨νκ³ ,
λ§μ½ λ³μ/μμ(μ¬κΈ°μ name)μ κ°μ΄ nilμ΄ μλ κ²½μ°, μ΄λ₯Ό unwrapν κ°μ μμ(μ¬κΈ°μ myName)μ λμ ν©λλ€.
κ·Έλ¬λ©΄ μ°λ¦¬λ μμ νκ² κΊΌλΈ μ΅μ λ κ°(== μμμ λμ λ κ°)μ μΈ μ μλκ±°κ² μ£ ??
β οΈ νμ§λ§, μ£Όμν μ μ΄ νκ°μ§ μμ΅λλ€.
if letμ ν΅ν΄ μ μΈλ μμμΈ myNameμ scopeλ if ꡬ문μ λλ€.
μ΄λ ifλ¬Έ λ°μμλ myNameμ΄λΌλ μμμ μ κ·Όν μ μμμ μλ―Έν©λλ€.
ifλ¬Έ λ°μμ μ¬μ©νλ €κ³ νλ©΄ μ΄λ κ² μλ¬κ° λ¨λ κ²μ νμΈν μ μμ΅λλ€.
guard let
guardλ '보νΈνλ€', 'μ§ν€λ€'λΌλ λ»μ κ°μ§λ―, μ½λμμλ μ΄λ¬ν μν μ ν΄μ€λλ€!
guard ꡬ문 μμμ 쑰건μ κ²μ¬νκ³ , 쑰건μ λ§μ‘±νμ§ λͺ»νλ©΄ elseλ¬ΈμΌλ‘ λΉ μ Έ νΉμ μ€ν ꡬ문μ λΉ λ₯΄κ² μ’ λ£ μν΅λλ€.
μμλ‘ μμΈν λ΄ μλ€!
νλ©΄ μ ν μ guard letκ΅¬λ¬Έμ΄ μ λ§ λ§μ΄ μ¬μ©λκΈ° λλ¬Έμ μμλ‘ νλ©΄μ ν μ½λλ₯Ό κ°μ Έμλ΄€μ΅λλ€!
μμ μ½λλ λ²νΌμ ν΄λ¦νλ©΄ modalλ‘ λ€μ νλ©΄μ λμμ£Όλ νλ©΄μ ν μ½λμΈλ°μ,
μ½λλ₯Ό λ―μ΄λ³΄λ©΄, optionalμΈ storyboardμμ SecondViewControllerλΌλ identifierλ₯Ό κ°μ§
ViewController instanceλ₯Ό μμ±ν΄μ nextVCλΌλ μμμ λ΄κ³ μμ΅λλ€.
λ§μ½, SecondViewControllerλΌλ identifierλ₯Ό κ°μ§ storyboardκ° μλ€λ©΄(== nilμ΄λΌλ©΄)
else ꡬ문μΌλ‘ λΉ μ Έ touchUpToGoSecondView ν¨μκ° μ’ λ£λ©λλ€.
κ·Έλ λ€λ©΄, guard ꡬ문μ λΉ μ Έλμ¨ nextVCλ νμ€ν μΈμ€ν΄μ€κ² μ£ ?
μ΄λ₯Ό modalμ λμ°λ present λ©μλμ μ΄μ©νλ©΄ μνλ νλ©΄μΌλ‘ μ νμ μμΌμ€ μ μλ κ²μ λλ€.
μ¬κΈ°μ! if let ꡬ문과μ μ°¨μ΄μ μ΄ λ³΄μ΄μλμ??
if letκ³Ό guard letμ κ°μ₯ ν° μ°¨μ΄μ μ μ΅μ λ λ°μΈλ©λ μμμ scopeκ° λ€λ₯΄λ€λ μ μ λλ€!!
ifλ¬Έμ ifλ¬Έ μμμλ§ μΆμΆν κ°μ μ¬μ©ν μ μμμ§λ§,
guardλ¬Έμ guardλ¬Έ λ°μμ μμ νκ² unwrapν μ΅μ λ νμ κ°μ μΈ μ μμ΅λλ€.
β οΈ guardλ¬Έμμ νκ°μ§ μ£Όμν μ μ,
μ΅μ λ λ°μΈλ©λ μμμ scopeλ guardꡬ문 λ°μ΄κΈ° λλ¬Έμ elseλ¬Έμμλ ν΄λΉ κ°μ μΈ μ μλ€λ κ²μ λλ€.
μ°¨μ΄μ μ 리
if letκ³Ό guard letμ μ°¨μ΄μ μ μ 리ν΄λ³΄μλ©΄!!
1. μμ(let)μ μ¬μ©λ²μκ° λ€λ¦ λλ€.
μμμ μμΈν μ€λͺ νλ―μ΄ μ΅μ λ λ°μΈλ©λ μμμ scopeκ° λ€λ¦ λλ€.
μ¦, μμλ₯Ό μ¬μ©ν μ μλ λ²μκ° λ€λ₯΄λ€λ κ²μ λλ€.
if let κ°μ κ²½μ°, μ΅μ λ λ°μΈλ©λ μμλ₯Ό ifλ¬Έ λ°μμ μ°λ κ²μ΄ λΆκ°νκ³
guard letμ κ²½μ°μλ ν΄λΉ μμλ₯Ό ν¨μ λ΄μμ μ§μ μμμ²λΌ μμ λ‘κ² μ¬μ©ν μ μμ΅λλ€.
(λ¨, elseλ¬Έμμλ μ¬μ©λΆκ°)
2. elseμ μλ΅ κ°λ₯ μ¬λΆμ μ°¨μ΄κ° μμ΅λλ€.
if letμ μμ μμ μ½λμμ μ μ μλ―μ΄ ν΄λΉ μ‘°κ±΄μ΄ trueμΈ κ²½μ°λ₯Ό κ°μ‘°νλ λ¬Έλ²μ λλ€.
κ·Έλ κΈ° λλ¬Έμ elseꡬ문μ κΌ μ¨μ£Όμ§ μμλ λ©λλ€.
νμ§λ§, guard letμ κ²½μ° nilμΈ κ²½μ°μ 무쑰건 ν¨μλ₯Ό μ’ λ£μμΌλ²λ¦¬κΈ° λλ¬Έμ else ꡬ문μ κΌ! μ¨μ£Όμ΄μΌ ν©λλ€.
λν, elseꡬ문 μμ return, break λ±κ³Ό κ°μ΄ ν¨μλ₯Ό μ’ λ£μν¬ μ μλ λͺ λ Ήμ΄κ° κΌ νμν©λλ€.
μ¬κΈ°κΉμ§ if letκ³Ό guard letμ λν΄ μμλ΄€λλ°μ!
if letκ³Ό guard let κ°κ°μ νΉμ§μ μ΄μ©ν΄μ μν©μ λ§κ² μ νμ©νλ€λ©΄
μ΅μ λ νμ μ κ°λ μμ νκ² μ²λ¦¬ν μ μμ κ² κ°μ΅λλ€!
κΈ΄ κΈ μ½μ΄μ£Όμ μ κ°μ¬ν©λλ€ππ
'π iOS > Swift' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Swift] enumerated() (0) | 2023.01.07 |
---|---|
[Swift] κ³ μ°¨ν¨μ - map, filter, reduce (1) | 2022.11.29 |
[Swift] νμ μΆλ‘ κ³Ό νμ μ΄λ Έν μ΄μ (0) | 2022.07.31 |
[Swift] Escaping Closure(νμΆ ν΄λ‘μ ) (8) | 2022.02.21 |
[Swift] ν΄λ‘μ (Closure) (4) | 2022.02.16 |