νλ‘ν μ½μ΄λ νΉμ κ°μ²΄κ° κ°μΆμ΄μΌ ν κΈ°λ₯μ΄λ μμ±μ λν μ€κ³λλΌκ³ ν μ μλ€. νμ νμ¬ νλ‘κ·Έλ¨μ κ°λ°ν λ λ€λ₯Έ νλ‘κ·Έλλ¨Έμκ² μΌμ λΆλΆμ κ°λ°μ 맑길 κ²½μ° λ¬΄μμ λ§‘κΈ°μ§ μκ³ 'μ΄λ¬ μ΄λ¬ν κ²λ€μ΄ νμνλ€'λΌλ μ€κ³λλ₯Ό λκ²¨μ€ λ μ¬μ©νλ€. μ΄λ κ² νλ‘ν μ½μ μ¬μ©ν΄μΌλ§ μΆν νλ‘κ·Έλ¨μ ν©μΉλ κ³Όμ μμ λ¬Έμ κ° μκΈ°μ§ μλλ€.
μλ₯Ό λ€μ΄ λ€λ₯Έ νλ‘κ·Έλλ¨Έμκ² ν΄λμ€κ° νμνλ° μ΄λ° κΈ°λ₯μ νλ ν¨μμ¬μΌ νλ€λ©° νλ‘ν μ½λ‘ λ§λ€μ΄ μ λ¬νλ©΄, νλ‘κ·Έλλ¨Έλ κ·Έ νλ‘ν μ½μ μμλ°μ μ½λ©νλ©΄ λλ€. μ΄λ μμλ°μ νλ‘ν μ½μμ μ μλ λ΄μ©μ λΉ λ¨λ¦¬λ©΄ μλ¬κ° λ°μνλ―λ‘ λλ½λμ§ μλλ‘ ν΄μΌ νλ€.
νλ‘ν μ½μ μ€μ§μ μΌλ‘ μλ¬΄λ° λ΄μ©μ΄ μλ€. λ¨μν μ μΈ ννλ§μ μ μνλ€. μ€μ§μ μΈ λ΄μ©μ μ΄ νλ‘ν μ½μ μ¬μ©νλ κ°μ²΄μμ μ μνλ€.
-
ν€μλ : protocol
-
νλ‘ν μ½ λͺ λͺ λ² : ν΄λμ€, ꡬ쑰체μ λ§μ°¬κ°μ§λ‘ 첫κΈμλ₯Ό λλ¬Έμλ‘ μμνλ
UpperCamelCase
λ₯Ό μ¬μ©νλ€.
protocol νλ‘ν μ½μ΄λ¦ {
νλ‘ν μ½ μ μ
}
- ꡬ쑰체, ν΄λμ€, μ΄κ±°ν λ±μμ νλ‘ν μ½μ μ±ννλ €λ©΄ νμ λ€μ μ½λ‘ (:)μ λΆμ¬μ€ ν μ±νν νλ‘ν μ½ μ΄λ¦μ μΌν(,)λ‘ κ΅¬λΆνμ¬ λͺ μνλ€.
struct SomeStruct: AProtocol, AnotherProtocol {
// ꡬ쑰체 μ μ
}
class SomeClass: AProtocol, AnotherProtocol {
// ν΄λμ€ μ μ
}
enum SomeEnum: AProtocol, AnotherProtocol {
// μ΄κ±°ν μ μ
}
- μ μ½λμ κ° νμ μ AProtocolκ³Ό AnotherProtocolμ μ±νν κ²μ΄λ€. λ§μ½, ν΄λμ€κ° λ€λ₯Έ ν΄λμ€λ₯Ό μμλ°λλ€λ©΄ μμλ°μ ν΄λμ€ μ΄λ¦ λ€μμ μ±νν νλ‘ν μ½μ λμ΄νλ€.
class SomeClass: SuperClass, AProtocol, AnotherProtocol {
// ν΄λμ€ μ μ
}
- μμ SomeClassλ SuperClassλ₯Ό μμλ°μμΌλ©° λμμ AProtocolκ³Ό AnotherProtocol νλ‘ν μ½μ μ±νν ν΄λμ€μ΄λ€.
μμ
κ³μ°κΈ°λ₯Ό λ§λ€μ΄ λ³Ό λ, λ§μ κ³Ό λΊμ μ΄ κΌ μμ΄μΌ νλ€λ©΄ μλμ²λΌ νλ‘ν μ½μ λ§λ€ μ μλ€.
protocol CalculatorProtocol
func add(op1 : Int, op2 : Int) -> Int
func sub(op1 : Int, op2 : Int) -> Int
μ΄λ κ² κ³μ°κΈ° νλ‘ν μ½μ λ§λ€μλ€λ©΄ μ΄ κ³μ°κΈ° νλ‘ν μ½μ μμλ°μ ν΄λμ€λ λ°λμ add ν¨μμ sub ν¨μλ₯Ό λ§λ€μ΄μΌ νλ€. κ·Έλ μ§ μμΌλ©΄ μλ¬κ° λ°μνλ€.
class SimpleCalculator : CalculatorProtocol {
func add(op1 : Int, op2 : Int) -> Int {
return op1 + op2
}
func sub(op1 : Int, op2 : Int) -> Int {
return op1 - op2
}
}
μ
λ°μ΄νΈ μμ
Swift β νλ‘ν μ½, μ΅μ€ν μ