νλ‘νΌν°
08 Nov 2017 | swift νλ‘νΌν° class structνλ‘νΌν°
νλ‘νΌν°μ λΆλ₯
- μν μ λ°λ₯Έ λΆλ₯ : μ μ₯νλ‘νΌν° / μ°μ°νλ‘νΌν°
- μμμ λ°λ₯Έ λΆλ₯ : μΈμ€ν΄μ€νλ‘νΌν°(μΌλ°μ μΌλ‘ μΈμ€ν΄μ€μ μμλλ νλ‘νΌν°) / νμ νλ‘νΌν° (μμΈμ μΌλ‘ ν΄λμ€μ ꡬ쑰체 μ체μ μμλμ΄ κ°μ κ°μ§λ νλ‘νΌν°)
μ μ₯ νλ‘νΌν°
- μ λ ₯λ κ°μ μ μ₯νκ±°λ μ μ₯λ κ°μ μ 곡νλ μν
- μμ λ° λ³μλ₯Ό μ¬μ©ν΄μ μ μκ°λ₯
- ν΄λμ€μ ꡬ쑰체μμλ μ¬μ©μ΄ κ°λ₯νμ§λ§, μ΄κ±°νμμλ μ¬μ©ν μ μμ
ν΄λμ€ λ΄μμ μ μΈλ λ³μλ μμλ₯Ό λΆλ¦. μ μΈμ μ΄κΈ°κ°μ ν λΉν΄μ£Όμ΄μΌν¨. (μ΄κΈ°κ°μ ν λΉνμ§ μμΌλ¬λ©΄ λ°λμ μ΅μ λ νμ μΌλ‘ μ μΈν΄μ£Όμ΄μΌ ν¨ - ? νΉμ ! μ΅μ λνμ μΌλ‘)
cf. νμ§λ§ ꡬ쑰체λ μ΄κ°μ μ΄κΈ°κ°μΌλ‘λΆν° μμ λ‘λ€. (μ΄κΈ°νλ μ΅μ λλ‘ μ§μ ν΄μ£Όμ§ μμλ λ¬Έμ κ° μμ.) μ΄λ λ©€λ²μμ΄μ¦ μ΄κΈ°ν κ΅¬λ¬Έμ΄ μ 곡λκΈ° λλ¬Έμ (λ©€λ²μμ΄μ¦ μ΄κΈ°ν ꡬ문 - μΈμ€ν΄μ€ μμ± μ μΈμκ°μ λ°μ νλ‘νΌν°μ κ°μ μ΄κΈ°νμμΌμ£Όλ μν μ ν¨)
μ°μ° νλ‘νΌν°
- νΉμ μ°μ°μ ν΅ν΄ κ°μ λ§λ€μ΄ μ 곡νλ μν
- λ³μλ§ μ¬μ©ν΄μ μ μ κ°λ₯
- ν΄λμ€, ꡬ쑰체, μ΄κ±°ν λͺ¨λμμ μ¬μ© κ°λ₯
μ°μ° νλ‘νΌν°λ λ€λ₯Έ νλ‘νΌν°μ κ°μ μ°μ°μ²λ¦¬νμ¬ κ°μ μ μΌλ‘ κ°μ μ 곡. μ΄λ νλ‘νΌν°μ κ°μ μ°Έμ‘°νκΈ° μν΄ λ΄λΆμ μΌλ‘ μ¬μ©νλ κ΅¬λ¬Έμ΄ get ꡬ문μ. ν¨μμ λΉμ·νκ² return ν€μλλ₯Ό μ¬μ©ν΄μ κ°μ λ°ννκ³ , μ¬κΈ°μμ returnκ°μ΄ νλ‘νΌν°κ° μ 곡νλ κ°μ΄ λ¨.
get ꡬ문μ ν΅ν΄μ μ°μ° νλ‘νΌν°κ° κ°μ λ°ννλ κΈ°λ₯μ νλ€.
class/struct/enum κ°μ²΄λͺ
{
...
var νλ‘νΌν°λͺ
: νμ
{
get {
νμν μ°μ° κ³Όμ
return λ°νκ°
}
set(맀κ°λ³μλͺ
) {
νμν μ°μ°κ΅¬λ¬Έ
}
}
}
struct UserInfo {
//μ μ₯ νλ‘νΌν° : νμ΄λ μ°λ
var birth : Int!
//μ°μ° νλ‘νΌν° : μ¬ν΄κ° λͺλ
λμΈμ§ κ³μ°
var thisYear : Int! {
get {
let dateFormat = DateFormatter()
dateFormat.dateFormat = "yyyy"
return Int(dateFormat.string(from: <#T##Date#>))
}
}
//μ°μ° νλ‘νΌν° : μ¬ν΄ - νμ΄λ μ°λ + 1
var age : Int {
get {
return (self.thisYear - self.birth) + 1
}
}
}
let info = UserInfo(birth: 1980)
print(info.age)
μ§μ° μ μ₯ν νλ‘νΌν° lazy
μ μ₯ν νλ‘νΌν°μ κ°μ΄ 곧λ°λ‘ μ§μ λ μ μμλ μ¬μ©νλ€. κΌ¬λ μΈμ€ν΄μ€κ° λ§λ€μ΄μ ΈμΌ μ μ μλ νμ μ μΈμ μμμ νλ‘νΌν°κ° μμ‘΄νλ κ²½μ°λ μλ€. μ΄λ° νκ²½μ κ°λ¦¬μΌ μ§μ° λ‘λ©μ΄λΌκ³ λΆλ₯Έλ€. μ§μ°λ‘λ©μ κ΄μ μ νλ‘νΌν°μ κ°μ΄ νμν λ κ³μ°νλ€λ μλ―Έμ΄κ³ , μ΄ μ§μ°μΌλ‘ μΈν΄ νλ‘νΌν°μ κ°μ κ³μ°νλ μΌλ μΈμ€ν΄μ€ μ΄κΈ°ν μ΄νλ‘ λ―Έλ€μ§λ€.
struct Town {
let region = "South" //let - μ μ₯μ© νλ‘νΌν°, μ½κΈ°μ μ©
var population = 5_422
var numberOfStopLights = 4
enum Size {
case small
case medium
case large }
/*
μ§μ° μ μ₯ν νλ‘νΌν° - νλ‘νΌν°μ κ°μ΄ νμν΄μΌ κ³μ°νλ€.
μ΄ μ§μ°μΌλ‘ μΈν΄ νλ‘ν°νΌμ κ°μ κ³μ°νλ μΌλ μΈμ€ν΄μ€ μ΄κΈ°ν μ΄νλ‘ μ΄λ€μ§λ€.
λ°λΌμ κ·Έ κ°μ΄ λμ€μ λ³κ²½λλ―λ‘ μ§μ° νλ‘νΌν°λ varλ‘ μ μΈν΄μΌνλ€.
*/
lazy var townSize: Size = {
switch self.population{
case 0...10_000:
return Size.small
case 10_001...100_000:
return Size.medium
default:
return Size.large
}
}()
- townSize νλ‘νΌν°μ νμ
μ Sizeλ‘ μ μΈνλ€. μλ₯Όλ€μ΄
myTown.townSize = Size.small
κ³Όκ°μ μμΌλ‘ μ½λλ₯Ό μμ±νμ§ μμκΈ° λλ¬Έμ μ΄ νλ‘νΌν°μ κ°μ μ§κΈ λ°λ‘ μ€μ ν κ²μ΄ μλλ€.