무엇이 벽호입니까?

9021 단어 iOSSwifttech

이른바 탈의실

  • 한마디로 무명 함수
  • 로 요약
  • 성명된 범위 내에서만 사용할 수 있는 함수
  • 뭘 할 수 있어요?

  • 함수 자체를 유형으로 지정할 수 있음
  • 함수 자체가 실례화될 수 있음
  • 함수의 반환값을 변수나 매개 변수에 직접 대입할 수 있다
  • 이럴 때 써요.


  • 전역 변수의 성명을 최대한 줄이려면
  • 다음 처리에서 함수의 실행 결과를 계속 사용하고자 하는 함수를 만드는 경우
  • 기본 형식


    함수 이름이 없기 때문에 매개 변수와 반환값 in 다음에 처리를 설명합니다.매개 변수나 되돌아오는 값이 없을 수도 있습니다.
     { (引数名:引数の型) -> 戻り値の型 in
        処理
     }
    

    써보세요.


    벽장 안에는 여러 가지 작법이 있기 때문에 생각만 해도 써 보았다.

    매개 변수와 반환 값이 없는 모드


    // 定義:引数と戻り値がないパターン その1
    let closure = { () -> Void in }
    
    // 定義:引数と戻り値がないパターン その2
    let closure2: () -> Void = {}
    

    매개 변수가 있고 되돌아오는 값이 없는 모드


    // 定義:引数あり・戻り値がないパターン
    let closure = { (a: Int) -> Void in }
    

    매개 변수, 반환 값이 있는 모드


    // 定義:引数なし・戻り値があるパターン
    let closure = { () -> Int in
        return 1
    }
    
    // 実行
    let val = closure()
    print( val ) // 1
    

    매개 변수/반환 값이 있는 모드


    // 定義:引数あり・戻り値があるパターン
    let closure = { (a: Int) -> Int in
        return a + 2
    }
    
    // 実行
    let val = closure(4)
    print( val ) // 6
    

    리턴 모드 생략


    // 定義:returnを省略したパターン
    let closure = { (a: Int) -> Int in a + 3 }
    
    // 実行
    let val = closure(5)
    print( val ) // 8
    

    반환값 형식을 생략하는 모드


    // 定義:戻り値の型を省略したパターン
    let closure = { (a: Int) in a + 3 }
    
    // 実行
    let val = closure(4)
    print( val ) // 7
    

    매개변수 유형 생략 모드


    // 定義:引数の型を省略したパターン
    let closure = { a in a + 6 }
    
    // 実行
    let val = closure(4)
    print( val ) // 10
    

    정의와 처리가 분리된 모델


    // 定義
    let closure: ((Int, Int) -> Int)
    
    // 処理
    closure = { a, b in
        return a + b + 1
    }
    
    // 実行
    let val: Int = closure3(2, 3)
    print(val) // 6
    

    좋은 웹페이지 즐겨찾기