ν΄λΉ ν¬μ€ν μ μλ λ§ν¬μμ κ°νμ & μ°Έμ‘°νμ μ λ¨Όμ νμ΅ν νμ μ½λ κ²μ κΆμ₯ν©λλ€.
μ κ²μλ¬Όλ€μμ ν΄λμ€λ ꡬ쑰체μ μ°λ λ³μλ μμλ₯Ό νλ‘νΌν°λΌκ³ λΆλ μλ€.
νλ‘νΌν°λ ν΄λμ€, ꡬ쑰체, μ΄κ±°νμ κ΄λ ¨λ κ°μ λ»νλ€. (λμΆ© μμλ§λ λ§μ)
νλ‘νΌν°λ μ΄ 3κ°μ§ ννλ‘ μ‘΄μ¬νλλ°, νλμ© μμ보λλ‘ νμ.
Stored Property (μ μ₯ νλ‘νΌν°)
μ μ₯ νλ‘νΌν°λ λ§ κ·Έλλ‘ κ°μ μ μ₯νλ νλ‘νΌν°λ₯Ό μλ―Ένλ€.
μ°λ¦¬κ° μ΅ν μκ³ μλ class, structμμ μ‘΄μ¬νλ λ³μλ μμλ κΈ°λ³Έμ μΌλ‘ μ μ₯ νλ‘νΌν°μ΄λ€.
class ex1 {
let num = 0
var str = "hello"
}
struct ex2 {
var num = 1
let str = "world"
}
// numκ³Ό strμ μ μ₯νλ‘νΌν°
Computed Property (μ°μ° νλ‘νΌν°)
μ°μ° νλ‘νΌν° μμ μ΄λ¦ κ·Έλλ‘ μ°μ°μ νλ νλ‘νΌν°λ₯Ό μλ―Ένλ€.
μ°λ¦¬κ° κ°μ²΄μ§ν₯μΈμ΄μμ μμ£Όμ°λ getter, setterμ μν μ νλ€κ³ μκ°νλ©΄ λ¨
μ¦, μλ£μ κ°μ get, set νλ λ©μλλ₯Ό μ°μ° νλ‘νΌν°λΌκ³ νλ€.
ꡬνν λλ, getκ³Ό setμ μ΄μ©νμ¬ λ°κΎΈμ΄μ€ λ΄μ©μ μ λ ₯νλ©΄ λλ€.
var name : Type {
get {
//code
}
set(parameter){
//code
}
}
//ex
class Info {
var birth = 1999
var age : Int {
get{
return (2022-birth)
}
set(change) {
birth = change
}
}
}
μ μ½λμμ μ°μ° νλ‘νΌν°λ₯Ό μ¬μ©νλ λ°©λ²μ,
var info : Info = Info()
print(info.age) // (2022-1999) 23
info.age = 2010 // birth = 2010
print(info.age) // (2022-2010) 12
ageλ₯Ό μΆλ ₯νλ μν©μλ getμ΄, μ λ ₯νλ μν©μλ setμ΄ λμνλ€.
π‘ μ°μ° νλ‘νΌν°λ κ°μ μ μ₯νλ κ²μ΄ μλ, λ€λ₯Έ κ°μ μΆλ ₯κ³Ό λ³κ²½μ λκΈ° λλ¬Έμ νμ μ μΆλ‘ ν μ μλ€.
κ·Έλ¬λ―λ‘ λ°λμ μλ£νμ μμ±ν΄μΌ νλ€.
set νλΌλ―Έν°μ μλ΅
μ°μ° νλ‘νΌν°μ setμμλ νλΌλ―Έν°κ° μμ κ²½μ° μλ΅ν μλ μμ§λ§, νλΌλ―Έν°κ° μλ κ²½μ°μλ μλ΅κ°λ₯νλ€.
??? λ¬΄μ¨ λ§μ΄μ§?
- νλΌλ―Έν°κ° μλ κ²½μ°
set {
birth = 1999
}
- νλΌλ―Έν°κ° μλ κ²½μ°
νλΌλ―Έν°κ° μλ κ²½μ°μλ μλ΅ κ°λ₯νλ°, μ΄μ λ setμ νλΌλ―Έν°λ νκ°λ§ μ‘΄μ¬ν μ μκΈ° λλ¬Έμ΄λ€.
λ§μ½ νλΌλ―Έν°κ° μ‘΄μ¬νλ€λ©΄ μ묡μ μΌλ‘ newValueλ₯Ό μ¬μ©νλ€.
set {
birth = newValue
}
getμ μλ΅
λ§μ½ set μμ΄ getλ§ λ¨λ μΌλ‘ μ¬μ©νλ€λ©΄, getλ μλ΅νμ¬ λ€μκ³Ό κ°μ΄ μ¬μ©ν μ μλ€.
var age : Int {
return (2022-birth)
}
π‘ set λ§ λ¨λ μΌλ‘ μ¬μ©νλ κ²μ λΆκ°λ₯ν¨
'π Programming > Swift' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Swift] μ΅μ λ 체μ΄λ (0) | 2022.02.17 |
---|---|
[Swift] class μμ(Inheritance) (0) | 2022.02.03 |
[Swift] ν΄λ‘μ (Closure)μ λͺ¨λ κ² (0) | 2022.01.21 |
[Swift] μ΄κ±°ν(Enumerations) (0) | 2022.01.20 |
[Swift] μ μ΄λ¬Έ (쑰건문 / λ°λ³΅λ¬Έ) (0) | 2022.01.18 |