Swift의 클로저

4722 단어 closureiosswift
스위프트 관계자에 따르면documentation

Closures are self-contained blocks of functionality that can be passed around and used in your code.



다른 언어의 람다와 유사하며 고차 함수에서 사용할 수 있습니다.
스위프트에서는 클로저를 사용하여 함수를 변수로 나타낼 수 있습니다.
아래 코드 스니펫을 사용하여 함수 작성에서 클로저 작성으로 이동하고 함수를 클로저로 변환하는 방법을 배웁니다.

func fullName(firstName: String, lastName: String) -> String{
  return "The Full Name is \(firstName) \(lastName)"
}

print(fullName(firstName: "Promise", lastName: "Ochornma"))

//The Result is:
//The Full Name is Promise Ochornma



위의 코드는 이름과 성을 전체 이름으로 연결하는 함수입니다.
이제 아래와 같이 클로저로 변환합니다.

let fullName: (String, String) -> String = { (firstName, lastName) in
   return "The Full Name is \(firstName) \(lastName)"
}

print(fullName("Promise", "Ochornma"))

//The Result is:
//The Full Name is Promise Ochornma



위의 코드 조각에서 클로저를 사용하여 fullName 함수를 fullName이라는 변수로 변환했습니다.
두 코드 모두 동일한 결과를 출력합니다.
"이름은 약속의 오호른마"
아래 코드 조각에서 볼 수 있듯이 달러 기호를 사용하여 클로저를 단순화할 수도 있습니다.
첫 번째 매개변수는 $0, 두 번째 매개변수는 $1로 표시됩니다. 즉, n개의 매개변수가 있는 경우 $p-1을 사용하여 각각 위치 p에서 액세스할 수 있으며 전체 매개변수는 $0...$n-1 범위에 있습니다.

let fullName: (String, String) -> String = {
   return "The Full Name is \($0) \($1)"
}

print(fullName("Promise", "Ochornma"))

//The Result is:
//The Full Name is Promise Ochornma



클로저 배열



클로저는 변수로 표현되는 함수이기 때문에 클로저 배열을 생성할 수 있습니다.
스위프트에 따르면documentation

An array stores values of the same type in an ordered list. The same value can appear in an array multiple times at different positions.



이는 배열의 모든 클로저가 동일한 유형이어야 하고 특정 클로저가 다른 위치에 있을 수 있음을 의미합니다.
일반적인 배열과 마찬가지로 for-in 루프를 사용하여 배열을 반복하고 + 기호를 사용하여 두 개의 배열을 추가하고 추가 방법을 사용하여 새 항목을 추가할 수 있습니다.
이제 클로저 배열을 만들고 사용하는 방법을 살펴보겠습니다.

let plus: (Int, Int) -> Int = {
  return $0 + $1
}

let minus: (Int, Int) -> Int = {
  return $0 - $1
}

let add: (Int, Int) -> Int = {
  return $0 + $1
}

let subtract: (Int, Int) -> Int = {
  return $0 - $1
}

let closureFunctions = [ plus, minus ]

let plusSign = closureFunctions[0]
print(plusSign(1, 5))
//result is:
//6
//The append method
closureFunctions.append(add)
closureFunctions.append(subtract)

print(closureFunctions.count)
//result is:
//4
for closure in closureFunctions {
   print(closure(6,5))
}
//result is:
//11
//1
//11
//1
let addition: (Int, Int) -> Int = {
  return $0 + $1
}

let subtraction: (Int, Int) -> Int = {
  return $0 - $1
}

let closureFunctions2= [ addition, subtraction ]

let newClosureFunction = closureFunctions + closureFunctions2
print(newClosureFunction.count)
//result is:
//6


폐쇄 사전



스위프트에 따르면documentation

A dictionary stores associations between keys of the same type and values of the same type in a collection with no defined ordering. Each value is associated with a unique key, which acts as an identifier for that value within the dictionary. Unlike items in an array, items in a dictionary don’t have a specified order. You use a dictionary when you need to look up values based on their identifier, in much the same way that a real-world dictionary is used to look up the definition for a particular word.



let plus: (Int, Int) -> Int = {
  return $0 + $1
}

let minus: (Int, Int) -> Int = {
  return $0 - $1
}

let add: (Int, Int) -> Int = {
  return $0 + $1
}

let subtract: (Int, Int) -> Int = {
  return $0 - $1
}

let closureFunctions = ["plus": plus, "minus" : minus ]

let plusSign = closureFunctions["plus"]
print(plusSign(1, 5))
//result is:
//6

//Add a new value to the dictionary
closureFunctions["add"] = add
closureFunctions["subtract"] = subtract

print(closureFunctions.count)
//result is:
//4

for (key, value) in closureFunctions {
  print("(\(key),\(value(5, 6)))")
}
//result is:
//(plus, 11)
//(minus, 1)
//(add, 11)
//(subtract, 1)

좋은 웹페이지 즐겨찾기