[Swift] νλ‘ν μ½ μμ± μꡬμ¬ν (Property Requirements)
μ°Έκ³ μλ£: 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
Method Requirements - Protocols
μμ±κ³Ό λ§μ°¬κ°μ§λ‘ method λ `static` ν€μλλ₯Ό ν΅ν΄ type methodλ₯Ό ꡬνν μ μμ΅λλ€. μΌλ°μ μΈ instance method μ type methodμ²λΌ μ μνλ©΄ λμ§λ§, νλ‘ν μ½μ ꡬνμ νμ§ μλ μꡬμ¬ν μ΄κΈ° λλ¬Έμ {
woozzang.tistory.com