λ©λͺ¨λ¦¬ λ¦(λμ)μλ μ½λμ κ°μ΄ μ°Έμ‘° νμ
μ κ°μ²΄κ° λ³μμ λ€μ΄κ°λ μκ° κ°μ²΄λ λ©λͺ¨λ¦¬ ν μμμ λ€μ΄κ°κ³ , ν΄λΉνλ μ£Όμκ°μ΄ λ³μμ ν λΉλ©λλ€. μ΄λ λ³μλ κ°μ²΄λ₯Ό μ°Έμ‘°νκ³ μλ€κ³ ννν©λλ€.class Person { // ...}var john = Person() μ΄ν μ΄ λ³μκ° νμμλ μν©μ΄ λμμ λ λ³μμ nilμ ν λΉνμ¬ κ°μ μμ μ§λ§ λ©λͺ¨λ¦¬μλ μ§μμ§μ§ μκ³ λ¨μ μμ΅λλ€. λ§μ½ λ κ°μ ν¨μλ₯Ό νΈμΆνκ² λλ©΄ λ©λͺ¨λ¦¬μ κ³μν΄μ μμ΄κ² λ©λλ€. μ΄λ λ©λͺ¨λ¦¬ λμκ° λ°μνκ² λ©λλ€. κ°μ²΄κ° νμνμ§ μκ² λ¨μ μμ΄μ λ©λͺ¨λ¦¬μ λΉμ©μ΄ κ³μ λ€μ΄κ°λ κ²μ΄κΈ° λλ¬Έμ
λλ€. κ²°κ΅ νμ μλ κ°μ²΄λ λ©λͺ¨λ¦¬μμ μ§μμ£Όμ΄μΌ ν©λλ€. λ©λͺ¨λ¦¬λ νμ μ μ΄κ³ κ·Έ 곡κ°μ μΈμ΄λΈ ν΄μ£Όμ΄μΌ νκΈ° λλ¬Έμ
λλ€. μ΄λ° λΆλΆ..
π iOS/Swift
mutatingmutatingμ κ° νμ
μΈ κ΅¬μ‘°μ²΄λ μ΄κ±°νμ λ©μλμμ ν΄λΉ μΈμ€ν΄μ€ νλ‘νΌν°λ₯Ό μμ ν μ μλλ‘ νμ©νλ ν€μλμ
λλ€.struct Person { var name: String mutating func changeName() { name = "Lee" }}var person = Person(name: "Kim")person.changeName()print(person.name) // Lee ꡬ쑰체λ μ΄κ±°νμμλ§ mutatingμ μ¬μ©νλ μ΄μ ꡬ쑰체λ μ΄κ±°νμ μΈμ€ν΄μ€ λ©μλμ mutatingμ μ¬μ©νμ§ μμΌλ©΄ μ»΄νμΌ μλ¬κ° λ°μν©λλ€.ꡬ쑰체μ μ΄κ±°νμ κ° νμ
μ΄κ³ , κ° νμ
μ μΈμ€ν΄μ€λ₯Ό 볡μ¬νλ©΄ μλ³Έ λ°μ΄ν°λ κ·Έλλ‘μ΄κΈ° λλ¬Έμ νλ‘νΌν°λ₯Ό λ³κ²½νλ €κ³ ..
μμ‘΄μ±μ΄ μκΈ°λ κ²½μ°ν ν΄λμ€μμ λ€λ₯Έ ν΄λμ€μ μ κ·Όν λ μλμ κ°μ μ½λλ‘ μ κ·Όμ ν©λλ€. μ΄λ ν΄λμ€Bλ ν΄λμ€Aμ μμ‘΄νκ² λ©λλ€.μμ‘΄μ±μ μλ‘ λ€λ₯Έ κ°μ²΄ μ¬μ΄μ μμ‘΄ κ΄κ³κ° μλ€λ κ²μ μλ―Έν©λλ€.class A { var name: String = "A"}class B { // ν΄λμ€Bλ ν΄λμ€Aμ μμ‘΄νλ€. (μμ‘΄μ±μ΄ μκΈ΄λ€.) var a: A = A() func printName() { print(a.name) }}let b: B = B()b.printName() // "A" μμ‘΄μ± μ£Όμ
μ΄λ κ² μμ‘΄μ±μ΄ μκΈ°λ μ½λλ€μ μ’μ§ μμ΅λλ€. μμ‘΄νκ³ μλ ν΄λμ€ λ΄μ μ½λκ° λ°λλ©΄ ν΄λΉ ν΄λμ€λ₯Ό μμ‘΄νκ³ μλ λ€λ₯Έ ν΄λμ€λ€λ μμ ν΄ μ£Όμ΄μΌ νκΈ° ..
Structμ Classꡬ쑰체μ ν΄λμ€λ νλ‘νΌν°μ λ©μλλ₯Ό μ¬μ©νμ¬ κ΅¬μ‘°νλ λ°μ΄ν°μ κΈ°λ₯μ κ°μ§ μ μμ΅λλ€. νλμ μλ‘μ΄ μ¬μ©μ μ μ λ°μ΄ν° νμ
μ λ§λ€μ΄ μ£Όλ κ²μ
λλ€. 곡ν΅μ νλ‘νΌν°μ λ©μλλ₯Ό μ μν μ μμ΅λλ€.μ΄κΈ°ν μν μ€μ μ μν μ΄κΈ°νλ₯Ό μ μν μ μμ΅λλ€.extensionκ³Ό κ°μ κΈ°λ₯ νμ₯μ΄ κ°λ₯ν©λλ€.Protocolμ μ±ννμ¬ κΈ°λ₯ μ€μ ν μ μμ΅λλ€. μ°¨μ΄μ Structꡬ쑰체λ κ° νμ
μΌλ‘ λ©λͺ¨λ¦¬μ μ€ν μμμ μ μ₯λ©λλ€.μ€ν μμμ μ»΄νμΌ νμμ ν¬κΈ°κ° κ²°μ λλ―λ‘ κ°μ μ°ΎκΈ° λΉ λ¦
λλ€.κ° νμ
μ κ°μ²΄κ° λ³μμ ν λΉλλ©΄ ν΄λΉ κ°μ²΄μ κ°μ΄ λ©λͺ¨λ¦¬μ κ·Έλλ‘ μ μ₯λ©λλ€. ν΄λΉ λ³μλ₯Ό λ λ€λ₯Έ λ³μμ ν λΉνμ λ κ°μ΄ 볡μ¬λμ΄, 볡μ¬λ κ°μ΄ λ©λͺ¨λ¦¬μ μ μ₯λ©λλ€. Classν΄λμ€λ μ°Έμ‘° νμ
..
μ΅μ
λ (Optional)μ΅μ
λμ κ°μ΄ μμ μλ μκ³ , μμ μλ μλ μν©μ λνλ
λλ€. μ΅μ
λμ νΉμ νμ
μ κ°μ ν¬ν¨ν μλ μκ³ , nilκ³Ό κ°μ΄ μ무 κ°λ ν¬ν¨νμ§ μμ μλ μμ΅λλ€.μ΅μ
λμ΄ νμν μ΄μ λ κ°μ΄ ν λΉλμ§ μμ μν©μ μμ νκ² μ²λ¦¬νκΈ° μν¨μ
λλ€. Swiftμμλ νμ
μ μμ μ±μ μ€μμνκΈ° λλ¬Έμ μ΅μ
λμ ν΅ν΄ κ°μ μ‘΄μ¬ μ¬λΆλ₯Ό λͺ
μμ μΌλ‘ ννν©λλ€.μ΅μ
λμ nilμ μ¬μ©ν μ μλ νμ
κ³Ό μλ νμ
μ ꡬλΆν©λλ€. nilμ μ¬μ©ν μ μλ νμ
μ μ΅μ
λ νμ
μ΄λΌκ³ λΆλ¦
λλ€. μλμ κ°μ΄ λ³μ μ μΈν λ, λ°μ΄ν° νμ
μ μΈ λ€μμ ?λ¬Έμλ₯Ό λμ΄ μ΅μ
λ νμ
μ΄ λκ² ν©λλ€.var number: Int? = 5 μ΅μ
λ λ°μΈλ© (Optional Binding)μ΅μ
λ λ°μΈλ©μ if, gu..