ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Function Types - Functions
    iOS/🟠 Swift 2020. 11. 8. 16:25

     

    Function TypesλŠ” λ³€μˆ˜λ‚˜ μƒμˆ˜μ— ν•¨μˆ˜λ₯Ό assign ν•˜λŠ” 경우, νƒ€μž…μ„ λͺ…μ‹œν•  λ•Œ ν•„μš”ν•©λ‹ˆλ‹€.

     

    Swiftμ—μ„œ ν•¨μˆ˜λŠ” first-class citizen μ΄λ―€λ‘œ, λ³€μˆ˜λ‚˜ μƒμˆ˜μ— ν•¨μˆ˜λ₯Ό assign ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

     

    이전 κΈ€μ—μ„œ Function Notationλ§Œμ„ μ΄μš©ν•˜μ—¬ νƒ€μž… 좔둠을 톡해 μ €μž₯ν•˜μ˜€μ§€λ§Œ,

      ν•¨μˆ˜λ„ μžλ£Œν˜•μ„ 가지고 μžˆμœΌλ―€λ‘œ λͺ…μ‹œμ μœΌλ‘œ λ³€μˆ˜ ν˜Ήμ€ μƒμˆ˜μ— νƒ€μž…λ„ ν‘œκΈ°ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

     

    λ˜ν•œ ν΄λ‘œμ €λ₯Ό νŒŒλΌλ―Έν„°λ‘œ λ°›λŠ” μ½”λ“œλ₯Ό μ΄ν•΄ν•˜κΈ° μœ„ν•΄ Function Types을 μ΄ν•΄ν•˜λŠ” 것은 ν•„μš”ν•©λ‹ˆλ‹€.

     

    Syntax

    /* Function Types */
    (type) -> type
    
    () -> () // () -> void λ‘œλ„ ν‘œκΈ°ν•  수 μžˆμŠ΅λ‹ˆλ‹€. Functionμ—μ„œ μ“°λŠ” void λŠ” λ¦¬ν„΄ν˜•μ΄ μ—†λ‹€λŠ” 것을 μ˜λ―Έν•©λ‹ˆλ‹€.

     

    Example Code 1

    func sayHello() {
        print("Hello, Swift")
    }
    
    let f1 = sayHello    // Type Inference
    
    func printHello(with name: String){
        print("Hello, \(name)")
    }
    
    let f2: (String) -> () = printHello(with:)    // Type Notation with Function Types

     

    단, f2λ₯Ό ν•¨μˆ˜λ‘œ ν˜ΈμΆœν•  경우, Function Types 만 λ°›μ•„μ˜€κΈ° λ•Œλ¬Έμ—, Argument Lable 없이 ν˜ΈμΆœν•˜μ—¬μ•Ό ν•©λ‹ˆλ‹€.

    Argument Label을 넣을 μ‹œ 컴파일 μ—λŸ¬

     

    Example Code 2

    func selectFunction(from op: String) -> (Int, Int) -> Int {
        ...
    }
    
    // ν™”μ‚΄ν‘œκ°€ λ§Žμ•„ ν—·κ°ˆλ¦΄ 수 μžˆμœΌλ‚˜,
    // 이 λ•ŒλŠ” 첫번째 ν™”μ‚΄ν‘œλ§Œ  selectFuntion(from:)의 리턴 값을 λ‚˜νƒ€λ‚΄κ³ ,
    // λ‚˜λ¨Έμ§€λŠ” νŽ‘μ…˜νƒ€μž…μ— λŒ€ν•œ ν™”μ‚΄ν‘œμž„μ„ μƒκΈ°ν•˜λ©΄ λ©λ‹ˆλ‹€.
    // 즉, selectFunction(from:)은 ν΄λ‘œμ €λ₯Ό λ¦¬ν„΄ν•˜λŠ” ν•¨μˆ˜ μž…λ‹ˆλ‹€.
    
    
    /* 가독성을 ν–₯μƒμ‹œν‚€λŠ” 방법 */
    typealias Arithmeticfuntion = (Int, Int) -> Int

     

     

     

    끝.


     

    이전 κΈ€: Function Notation - Functions

     

    'iOS > 🟠 Swift' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

    Side Effect - General  (0) 2020.11.24
    Nested Functions - Functions  (0) 2020.11.08
    [Swift] Function Notation - Functions  (2) 2020.11.08
    Variadic Parameters - Functions  (0) 2020.11.07
    Argument Label - Functions  (0) 2020.11.07

    λŒ“κΈ€

μ–΄μ œλ³΄λ‹€ λ°œμ „ν•œ λ‚˜