-
Self Type - GeneraliOS/π Swift 2020. 11. 27. 23:40
" μ»΄νμΌλ¬κ° 컨ν μ€νΈμ μν΄ μΆλ‘ νλ νμ "
*Self Type μ νμ μ λλ€. μμ± self μλ λ€λ₯Έ κ°λ μ λλ€.
extension Int { static let zero: Self = 0 // Int λ‘ μΆλ‘ λ©λλ€. var zero: Self { // Int λ‘ μΆλ‘ λ©λλ€. return 0 } func makeZero() -> Self { return Self() // Int λ‘ μΆλ‘ λμ΄ Int μΈμ€ν΄μ€λ₯Ό λ°νν©λλ€. } }
Extension, Struct, Class, Enum, Protocol μμ μ¬μ© κ°λ₯ν©λλ€.
Protocol μ κ²½μ°, Protocol μ ꡬνν νμ μ Self Type μΌλ‘ μΆλ‘ ν©λλ€.
Self Type μ μ₯μ μ, νμ μ μμ‘΄νμ§ μλ λ²μ©μ μΈ μ½λλ₯Ό λ§λ€ μ μλ€λ κ²μ λλ€.
μλ₯Ό λ€μ΄, μμ extension Int λΈλ‘μ μ½λλ₯Ό extension Double λΈλ‘μ κ·Έλλ‘ Copy&Paste ν΄λ³΄κ² μ΅λλ€.
extension Double { static let zero: Self = 0 // Double λ‘ μΆλ‘ λ©λλ€. var zero: Self { // Double λ‘ μΆλ‘ λ©λλ€. return 0 } func makeZero() -> Self { return Self() // Double λ‘ μΆλ‘ λμ΄ Double μΈμ€ν΄μ€λ₯Ό λ°νν©λλ€. } }
κ°μ μ½λμ΄μ§λ§, μ»΄νμΌλ¬λ 컨ν μ€νΈμ μν΄ Self Type μ μΆλ‘ νλ―λ‘, μ΄λ²μλ Double Type μΌλ‘ μΆλ‘ ν©λλ€.
λ.
μ΄μ κΈ : Property Observer - Property
'iOS > π Swift' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Swift] κ°νμ κ³Ό μ°Έμ‘°νμ ( Value Type vs Reference Type ) (4) 2020.12.29 Mutability of Collections - Collections (0) 2020.12.01 [Swift] Property Observer (μμ± κ°μμ) λ? (0) 2020.11.27 Side Effect - General (0) 2020.11.24 Nested Functions - Functions (0) 2020.11.08