본문 바로가기
IOS 기초

[IOS 기초] 14주차

by heeaeeeee 2024. 12. 5.

다시 사람의 앱을 가져오는 방법

viewcontroller

소스 복붙 후 소스 수정하기

 

클로저(Closure)

클로저를 지원하는 프로그래밍 언어

  1. JavaScript
  2. Python
  3. Ruby
  4. Java (Java 8 이상)
  5. C#
  6. Swift
  7. Kotlin
  8. Scala
  9. PHP (PHP 5.3 이상)
  10. Lua
  11. Haskell
  12. Erlang
  13. Go
  14. Rust
  15. Dart

 

디폴트 인자(매개변수)

매개변수도 없고 리턴값도 없는 함수를 3번째 인자에 넣어야 함

 

후행 클로저를 사용하는 함수를 많이 사용하는 순서로 설명

1. map: 배열의 각 요소를 변환하는 데 사용

let numbers = [1, 2, 3, 4, 5]
let squared = numbers.map { $0 * $0 }

2. filter: 배열에서 조건에 맞는 요소만 추출

let evenNumbers = numbers.filter { $0 % 2 == 0 }

3. sorted: 배열을 정렬할 사용합니다

let names = ["Alice", "Bob", "Charlie"]
let sortedNames = names.sorted { $0 > $1 }

4. forEach: 배열의 각 요소에 대해 작업을 수행

names.forEach { print($0) }

5. UIView.animate: UI 애니메이션을 구현할 사용

UIView.animate(withDuration: 0.3) {
    view.alpha = 0
}

 

클로저로 바꾸기

 

func add(x: Int, y: Int) -> Int {
return x+y
}
print(add(x: 10, y: 20))

//1단계 func와 함수 이름 지우기
(x: Int, y: Int) -> Int {
return x+y
}

//2단계
let add1 = { (x: Int, y: Int) -> Int  in
return x+y
}
print(add1(2, 3)) //주의 error: extraneous(관련 없는) argument labels 'x:y:' in call

 

후행 클로저(trailing closure)

-> argument 생략 가능

 

제일 뒤에 있는 화살표 리턴형

 

후행 클로저 스타일

func math(x: Int, y: Int, cal: (Int, Int) -> Int) -> Int {
    return cal(x, y) //add1(10, 20)
}
print(math(x: 10, y: 20, cal: add1))
math(x: 10, y: 20, cal: { (x: Int, y: Int) -> Int  in
    return x+y
})
math(x: 10, y: 20) {
    (x: Int, y: Int) -> Int  in return x+y
}