ν΄λ‘μ λ μλ κ·μΉμ ν΅ν΄ λ€μν λͺ¨μ΅μΌλ‘ ννλ μ μλ€.
- νν ν΄λ‘μ : ν¨μμ 맀κ°λ³μ λ§μ§λ§μΌλ‘ μ λ¬λλ ν΄λ‘μ λ ννν΄λ‘μ (trailing closure)λ‘ ν¨μ λ°μ ꡬνν μ μλ€.
- λ°ννμ μλ΅ : μ»΄νμΌλ¬κ° ν΄λ‘μ μ νμ μ μ μΆν μ μλ κ²½μ° λ§€κ°λ³μ, λ°ν νμ μ μλ΅ν μ μλ€.
- λ¨μΆ μΈμ μ΄λ¦ : μ λ¬μΈμμ μ΄λ¦μ΄ κ΅³μ΄ νμμκ³ , μ»΄νμΌλ¬κ° νμ μ μ μΆν μ μλ κ²½μ° μΆμ½λ μ λ¬μΈμ μ΄λ¦($0, $1, $2...)μ μ¬μ© ν μ μλ€.
- μμμ λ°ν νν : λ°ν κ°μ΄ μλ κ²½μ°, μμμ μΌλ‘ ν΄λ‘μ μ 맨 λ§μ§λ§ μ€μ return ν€μλλ₯Ό μλ΅νλλΌλ λ°ν κ°μΌλ‘ μ·¨κΈνλ€.
κΈ°λ³Έ ν΄λ‘μ νν
// ν΄λ‘μ λ₯Ό 맀κ°λ³μλ‘ κ°λ ν¨μ calculated(a:b:method:)μ κ²°κ³Όκ°μ μ μ₯ν λ³μ result μ μΈ
func calculate(a: Int, b: Int, method: (Int, Int) -> Int) -> Int {
return method(a, b)
}
var result: Int
- νν ν΄λ‘μ
ν΄λ‘μ κ° ν¨μμ λ§μ§λ§ μ λ¬μΈμμΌλ, λ§μ§λ§ 맀κ°λ³μ μ΄λ¦μ μλ΅ν ν ν¨μ μκ΄νΈ μΈλΆμ ν΄λ‘μ λ₯Ό ꡬνν μ μλ€.
- λ°ννμ μλ΅
calculate(a:b:method:) ν¨μμ method 맀κ°λ³μλ Int νμ μ λ°νν κ²μ΄λΌλ μ¬μ€μ μ»΄νμΌλ¬λ μκΈ° λλ¬Έμ κ΅³μ΄ ν΄λ‘μ μμ λ°ννμ μ λͺ μν΄ μ£Όμ§ μμλ λλ€. λμ in ν€μλλ μλ΅ν μ μλ€.
- λ¨μΆ μΈμμ΄λ¦
ν΄λ‘μ μ 맀κ°λ³μ μ΄λ¦μ΄ κ΅³μ΄ λΆνμνλ€λ©΄ λ¨μΆ μΈμμ΄λ¦μ νμ©ν μ μλ€. λ¨μΆ μΈμμ΄λ¦μ ν΄λ‘μ μ 맀κ°λ³μμ μμλλ‘ $0, $1, $2... μ²λΌ νννλ€.
- μμμ λ°ν νν
ν΄λ‘μ κ° λ°ννλ κ°μ΄ μλ€λ©΄ ν΄λ‘μ μ λ§μ§λ§ μ€μ κ²°κ³Όκ°μ μμμ μΌλ‘ λ°νκ°μΌλ‘ μ·¨κΈνλ€.
**μΆμ½ μ κ³Ό ν λΉκ΅**
//μΆμ½ μ
result = calculate(a: 10, b: 10, method: { (left: Int, right: Int) -> Int in
return left + right
})
//μΆμ½ ν
result = calculate(a: 10, b: 10) { $0 + $1 }
* λ무 μΆμ½λ μ½λλ νμΈμ΄ 보거λ, μκ°μ΄ μ§λ λ€μ λ³Ό λ λͺ μμ±μ΄ λ¨μ΄μ§ μ μμΌλ―λ‘ μ μ μ μμ μΆμ½νλλ‘ νλ€.