π‘ ν΄λμ€, ꡬ쑰체, μ΄κ±°ν λ±μ κ΄λ ¨λ λ³μ λλ μμ±
class Human {
let name: String = "unknown"
var age: Int = 0
}
struct Person {
let name: String = "unknown"
var age: Int = 0
}
name, age λ± κ΅¬μ‘°μ²΄μ μ μ₯λ μμ, λ³μ λͺ¨λ
μ μ₯ νλ‘νΌν°
ꡬ쑰체μ μ μ₯ νλ‘νΌν°κ° μ΅μ λμ΄ μλλλΌλ, ꡬ쑰체λ μ μ₯ νλ‘νΌν°λ₯Ό λͺ¨λ ν¬ν¨νλ μ΄λμ λΌμ΄μ λ₯Ό μλμΌλ‘ μμ±νλ€. νμ§λ§ ν΄λμ€μ μ μ₯ νλ‘νΌν°λ μ΅μ λμ΄ μλλΌλ©΄ νλ‘νΌν° κΈ°λ³Έκ°μ μ§μ ν΄μ£Όκ±°λ, μ¬μ©μ μ μ μ΄λμ λΌμ΄μ λ₯Ό ν΅ν΄ λ°λμ μ΄κΈ°νν΄μΌ νλ€.
var name: Type {
get { //getter λ€λ₯Έ μ μ₯ νλ‘νΌν°μ κ°μ μ»κ±°λ μ°μ°νμ¬ λ¦¬ν΄ν λ
statements
return expr
}
set(name) { //setter λ€λ₯Έ μ μ₯νλ‘νΌν°μ κ°μ μ μ₯ν λ
statements
}
}
- getter: μΈμ€ν΄μ€ λ΄/μΈλΆμ κ°μ μ°μ°νμ¬ μ μ ν κ°μ λ°ννλ€. λ¦¬ν΄ κ΅¬λ¬Έμ΄ νμ μ‘΄μ¬ν΄μΌ νλ€.
- setter: μλνλ λ΄λΆμ νλ‘νΌν° κ°μ κ°μ μ μΌλ‘ μ€μ νλ€. parameterλ‘ λ°μ κ°μ μ΄λ€ μ μ₯ νλ‘νΌν°μ μ΄λ»κ² μ€μ ν κ²μΈμ§ ꡬννλ€.
class Person {
var name: String = "kijrary" // μ μ₯ νλ‘νΌν°
var alias: String { // μ°μ° νλ‘νΌν°
get {
return name
}
set(name) {
self.name = name
}
}
}
class Human {
static let name: String = "kijrary" // μ μ₯ νμ
νλ‘νΌν°
static var alias: String { // μ°μ° νμ
νλ‘νΌν°
return name + "μ λ°λ³΄"
}
}
static
μ μ¬μ©νλ©΄ νμ
νλ‘νΌν°κ° λλ€.let exampleProperty: Human = .init()
exampleProperty.name //error
Human.name // -> kijrary
- μΈμ€ν΄μ€λ₯Ό μλ‘ μμ±ν΄λ κ·Έ μμ μ μ₯/μ°μ° νλ‘νΌν°μ μ κ·Όν μ μμ
- ν΄λΉ νλ‘νΌν° ν κ°λ₯Ό μ 체μ μΌλ‘ 곡μ νλ κ°λ
- νμ μ΄λ¦μ ν΅ν΄μλ§ μ κ·Ό κ°λ₯
κ·Έ νμ μ λͺ¨λ μΈμ€ν΄μ€κ° 곡ν΅μΌλ‘ μ¬μ©λλ κ°(C μΈμ΄μ static constantμ μ μ¬)μ΄λ, λͺ¨λ μΈμ€ν΄μ€μμ 곡μ©μΌλ‘ μ κ·Όνκ³ κ°μ λ³κ²½ν μ μλ λ³μ(C μΈμ΄μ static λ³μμ μ μ¬)λ±μ μ μν λ μ μ©νλ€.