-
[Swift] νλ‘ν μ½ μμ± μꡬμ¬ν (Property Requirements)iOS/π Swift 2021. 1. 15. 14:27
μ°Έκ³ μλ£: Protocols - swift.org
var
protocol Figure { var name: String { get set } }
νλ‘ν μ½μμ μμ± μ μΈ μμ λΆλ `var` ν€μλλ μμ±μ κ°λ³μ± κ³Όλ κ΄λ ¨μ΄ μμ΅λλ€.
νλ‘ν μ½μμ μμ±μ 무쑰건 μμ `var` ν€μλλ₯Ό λΆμ¬μΌν©λλ€.
λν μ μ₯μμ± νΉμ κ³μ°μμ±λ§μΌλ‘ ꡬνμ κ°μ ν μλ μμ΅λλ€.
μμ±μ κ°λ³μ±μ λ³μ μ νμ λ€μ λΆλ { get set } μ μ‘°ν© μΌλ‘ κ²°μ λ©λλ€.
get , set μ΄ λͺ¨λ μλ€λ©΄ μ½κΈ° μ°κΈ°λ₯Ό λͺ¨λ κ°λ₯νκ² κ΅¬νν΄μΌ νκ³ ,
get λ§ μλ μμ±μ΄λΌλ©΄ μ½κΈ°λ§ κ°λ₯ν΄λ νλ‘ν μ½μ λ°λ₯΄λ κ²μ λλ€. μ½κΈ° μ°κΈ°λ₯Ό λͺ¨λ κ°λ₯νκ² κ΅¬νν΄λ λ©λλ€.
gettable: μμ±μ μ½κΈ° κ°λ₯νκ² λ§λλ κ²
settable: μμ±μ μ°κΈ° κ°λ₯νκ² λ§λλ κ²{ get } λ§ μλ κ²½μ°λ μ λ λ€ κ°λ₯ν κΉμ?
νλ‘ν μ½μ μ΅μνμ μꡬμ¬νμ΄κΈ° λλ¬Έμ λλ€.
static var
protocol Figure { static var name: String { get set } }
static μΌλ‘ μ μΈνλ©΄ νλ‘ν μ½μμ μ±νν νμ μμ ꡬν μ νμ μμ±μΌλ‘ μ μΈν΄μ£Όμ΄μΌ ν©λλ€.
μ°Έκ³ )
νμ μμ±μ μλΈν΄λμ€μκ² μμλμ§λ§, μ€λ²λΌμ΄λ©μ λΆκ°λ₯ν©λλ€
μ€λ²λΌμ΄λ©μ΄ κ°λ₯νκ² νλ €λ©΄ ꡬν μ `class` λ₯Ό λΆμ΄λ©΄ λ©λλ€.
κ·Έλ κ² ν΄λ νλ‘ν μ½ μꡬμ¬νμ λ§μ‘±νλ κ²μ λλ€.
Example Code
protocol Figure { /* 1 */ var name: String { get set } } struct Rectangle: Figure { /* 2 */ // let name = "Rect" var name = "Rect" } struct Triangle: Figure { var name = "Triangle" } struct Circle: Figure { /* 3 */ var name: String { get { return "Circle" } set { } } }
/* 1 */ μμ name μμ±μ { get set } μΌλ‘ μ μΈ λμμΌλ―λ‘, νλ‘ν μ½ κ΅¬νμ μ½κΈ°μ μ°κΈ°κ° λͺ¨λ κ°λ₯ν μμ±μΌλ‘ ꡬνλμ΄μΌ ν©λλ€.
/* 2 */ μμ `let`μ μ¬μ©ν μ μμ΅λλ€. νλ‘ν μ½μ μꡬμ¬νκ³Ό λ€λ₯΄κ² μ°κΈ°κ° λΆκ°λ₯ν΄μ§κΈ° λλ¬Έμ λλ€.
/* 3 */ μμ name μ κ³μ° μμ±μΌλ‘ ꡬνλμμ΅λλ€. set λΈλ‘μ΄ μ¬λΌμ§λ€λ©΄ μ»΄νμΌ μλ¬κ° λ° κ²μ λλ€. μ°κΈ°κ° λΆκ°λ₯ ν΄μ§κΈ° λλ¬Έμ λλ€.
λ!
λ€μ κΈ: Method Requirements - Protocols
'iOS > π Swift' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
Mutating Method - Methods (0) 2021.01.18 [Swift] νλ‘ν μ½ λ©μλ μꡬμ¬ν (Method Requirements) (0) 2021.01.18 [Swift] νλ‘ν μ½ κ°μ (Protocol Overview) (0) 2021.01.15 Closure Capture List - Memory (0) 2021.01.05 Memberwise Initializer - Initializer (0) 2021.01.05