ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Swift] ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ (Functional Programming)
    Swift 2022. 1. 21. 23:19

    ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ์ ˆ์ฐจ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ๊ณผ ์ƒ๋ฐ˜๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ ˆ์ฐจ์ง€ํ–ฅ์  ์š”์†Œ๋“ค๊ณผ ๊ณต์กดํ•˜๊ธฐ๋„ ํ•˜๊ณ , ์ด๋“ค์„ ํฌํ•จํ•˜๊ธฐ๋„ ํ•˜๋Š” ๊ฐœ๋…์ด๋‹ค.

    ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ๋„ ๊ฐ์ฒด์ง€ํ–ฅ๊ณผ ๋Œ€๋ฆฝํ•˜๋Š” ๊ด€๊ณ„๋Š” ์•„๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋ž˜๋จธ๋“ค์ด ์ผํ•˜๋Š” ์ƒˆ๋กœ์šด ํŒจ๋Ÿฌ๋‹ค์ž„์„ ์ œ์‹œํ•œ ๊ฒƒ.
    ใ…ค
    ใ…ค

    ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ์˜ˆ์‹œ๋ฅผ ์ดˆ์ฝœ๋ › ๊ณต์žฅ์œผ๋กœ ๋‚˜ํƒ€๋‚ด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

    • ๋น„ ํ•จ์ˆ˜ํ˜•

      • ๊ณต์žฅ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฐ ๊ตฌ์„ฑ์›์ด ์•Œ๊ณ  ์žˆ๋‹ค. ๋‹ค๋ฅธ ๊ณณ์— ๋ฌด์–ธ๊ฐ€๋ฅผ ์ ์–ด๋‘๊ณ  ์ฐธ์กฐํ•˜๊ธฐ๋„ ํ•จ. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๋Ÿฌ ํ•จ์ˆ˜๋“ค์ด ์‚ฌ์šฉํ•˜๋Š” ์™ธ๋ถ€ ๋ณ€์ˆ˜์— ์˜ค๋ฅ˜๊ฐ€ ์ƒ๊ธฐ๋ฉด, ๊ณต์žฅ ํ”„๋กœ์„ธ์Šค์— ์ฐจ์งˆ์ด ์ƒ๊ธธ ์ˆ˜ ๋ฐ–์— ์—†๋‹ค.

      • ๊ฐ ๊ตฌ์„ฑ์›๋“ค์ด ๋งก์€ ์—ญํ• ์— ๋”ฐ๋ผ ํ˜‘๋ ฅํ•˜๋ฉฐ ์ผํ•จ. ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•œ ์„ค๊ณ„์ž์˜ ๊ณ ๋ฏผ์ด ํ•„์š”.

        แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ_2022-01-23_แ„‹แ…ฉแ„’แ…ฎ_12 29 36
        ใ…ค
        ใ…ค

    • ํ•จ์ˆ˜ํ˜•

      • ๊ฐ ๊ตฌ์„ฑ์›๋“ค์€ ๊ณต์žฅ ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•ด ์•Œ์ง€ ๋ชปํ•จ.

      • ์ธํ’‹๊ณผ ์•„์›ƒํ’‹์ด ์žˆ๋‹ค. ๊ฐ ๊ตฌ์„ฑ์›๋“ค์—๊ฒŒ ์ผ์„ ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•์€, ๊ทธ๋“ค์˜ ์—ญํ• ๋Œ€๋กœ ์ฒ˜๋ฆฌํ•  ์ค‘๊ฐ„์žฌ๋ฃŒ๋ฅผ ๋„˜๊ฒจ์ฃผ๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๊ฐ์ž ๋งก์€ ์ž‘์—…์„ ํ•ด์„œ ๊ฒฐ๊ณผ๋ฌผ์„ ๋ฐ˜ํ™˜ํ•˜๊ฒŒ ๋œ๋‹ค.

      • ์™ธ๋ถ€ ํ™˜๊ฒฝ์œผ๋กœ๋ถ€ํ„ฐ ์ฒ ์ €ํžˆ ๋…๋ฆฝ์ ์ž„. ๋น„ ํ•จ์ˆ˜ํ˜• ๊ณต์žฅ์ฒ˜๋Ÿผ ๋‹ค๋ฅธ ๊ณณ์— ๋ฌด์–ธ๊ฐ€๋ฅผ ์ ์–ด๋‘์ง€๋„, ์ฐธ์กฐํ•˜์ง€๋„ ์•Š๋Š”๋‹ค. ์˜ค๋กœ์ง€ ์ž์‹ ๋“ค์—๊ฒŒ ์ฃผ์–ด์ง€๋Š” ๊ฒƒ๋“ค๋กœ๋งŒ ์ •ํ•ด์ง„ ์ž‘์—…์„ ํ•œ๋‹ค.

      • ๊ฐ™์€ ์ธํ’‹์— ์žˆ์–ด์„œ ์–ธ์ œ๋‚˜ ๋™์ผํ•œ ์•„์›ƒํ’‹์„ ์ƒ์‚ฐํ•œ๋‹ค. ์ด๋Š” ์™ธ๋ถ€ ํ™˜๊ฒฝ์œผ๋กœ๋ถ€ํ„ฐ ์ฒ ์ €ํžˆ ๋…๋ฆฝ์ ์ด๊ธฐ ๋•Œ๋ฌธ. ์™ธ๋ถ€ ์š”์ธ์˜ ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š์œผ๋ฏ€๋กœ ์ฒ ์ €ํžˆ ๋“ค์–ด์˜ค๋Š” ์žฌ๋ฃŒ์— ๋”ฐ๋ฅธ ๊ฒฐ๊ณผ๋ฌผ์ด ๋งŒ๋“ค์–ด์ง€๊ณ , ๋‹ค๋ฅธ ๊ตฌ์„ฑ์›๋“ค์— ๋Œ€ํ•ด์„œ๋„ ๋„˜๊ฒจ์ฃผ๋Š” ๊ฒฐ๊ณผ๋ฌผ ์™ธ์—๋Š” ์•„๋ฌด ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋Š”๋‹ค. ์ด๋Ÿฐ ๊ฒƒ์„ ์ˆœ์ˆ˜ ํ•จ์ˆ˜๋ผ๊ณ  ํ•œ๋‹ค.

      • ๋ถ€์ž‘์šฉ์— ์˜ํ•œ ๋ฌธ์ œ๋กœ๋ถ€ํ„ฐ ๋ณด๋‹ค ์ž์œ ๋กญ๋‹ค. ๋ถ€์ž‘์šฉ์ด๋ž€, ์–ด๋–ค ํ•จ์ˆ˜์˜ ๋™์ž‘์— ์˜ํ•ด ํ”„๋กœ๊ทธ๋žจ ๋‚ด ํŠน์ • ์ƒํƒœ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋Š” ์ƒํ™ฉ์„ ๋งํ•œ๋‹ค. ๋ณ€๊ฒฝ๋œ ์ƒํƒœ๋Š” ๊ด€๋ จ๋œ ๋‹ค๋ฅธ ๋™์ž‘๋“ค์—๊ฒŒ ์˜ํ–ฅ์„ ๋ฏธ์นœ๋‹ค.

        แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ_2022-01-23_แ„‹แ…ฉแ„’แ…ฎ_12 28 56
        ใ…ค
        ใ…ค

    ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ

    • ํ•จ์ˆ˜์˜ ๋™์ž‘์— ์˜ํ•œ ๋ณ€์ˆ˜์˜ ๋ถ€์ˆ˜์ ์ธ ๊ฐ’ ๋ณ€๊ฒฝ์„ ์›์ฒœ ๋ฐฐ์ œํ•จ์œผ๋กœ์จ ๋ถ€์ž‘์šฉ์— ์˜ํ•œ ์˜ค๋ฅ˜๋ฅผ ๋ฐฉ์ง€ํ•˜๋Š” ๊ฒƒ. ์ฆ‰, ๋ฌธ์ œ์˜ ์†Œ์ง€๊ฐ€ ์žˆ๋Š” ์ผ์€ ํ•˜์ง€ ์•Š๋Š” ์ฝ”๋”ฉ ๋ฐฉ์‹.
    • ์™ธ๋ถ€ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋”๋ผ๋„, ๊ทธ ๋ณธ์ฒด์— ์ ‘๊ทผํ•ด์„œ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ ์ธ์ž๋กœ ๋„ฃ์–ด์„œ ์‚ฌ๋ณธ์œผ๋กœ ๋ณต์‚ฌํ•ด๊ฐ€์„œ ์ž‘์—…์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋–ค ์ž‘์—…์„ ํ•˜๋“  ๋ถ€์ž‘์šฉ์€ ์ผ์–ด๋‚˜์ง€ ์•Š๋Š”๋‹ค.
    • ์•„๋ฌด ๋ณ€์ˆ˜ ๊ฐ’๋„ ๋ฐ”๊พธ์ง€ ์•Š์œผ๋ฉด์„œ, ๊ณ ์ •๊ฐ’๋งŒ ์“ฐ๋ฉด์„œ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๋งŒ๋“ ๋‹ค๋Š” ๊ฒƒ์€ ์•„๋ฌด๋Ÿฐ ์ƒํƒœ๋ณ€ํ™”๋ฅผ ์ผ์œผํ‚ค์ง€ ์•Š๋Š”๋‹ค๋Š” ๋ง์€ ์•„๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์„ 100% ํ•จ์ˆ˜ํ˜• ๊ธฐ์ค€์— ๋งž์ถ”๋Š” ๊ฒƒ์€ ์–ด๋ ต์ง€๋งŒ, ์ ์–ด๋„ ์ผ์ • ๋‹จ์œ„์˜ ์ž‘์—…์— ์žˆ์–ด์„œ๋Š” ๋ถ€์ˆ˜ํšจ๊ณผ ์—†์ด ์•ˆ์ •์ ์ด๊ณ  ์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ ํ”„๋กœ๊ทธ๋žจ์„ ์งœ๋Š” ๊ฒƒ์ด ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋‹ค.
    • ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์‹ฑ์ด ์ค‘์š”ํ•ด์ง„ ์˜ค๋Š˜๋‚  ๋”์šฑ ๋” ์ฃผ๋ชฉ๋ฐ›๊ณ  ์žˆ๋‹ค.
      ใ…ค
      ใ…ค

    ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๋Œ€ํ‘œ์  ํŠน์ง•๊ณผ ์š”์†Œ

    1. ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ์„ ์–ธํ˜•์ด๋‹ค.

    • ๋ช…๋ นํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ โ€˜๋„ˆ๋Š” ์ด๊ฑธ ํ•˜๊ณ  ๋„ˆ๋Š” ์ €๊ฑธ ๋ˆ„๊ตฌ๋ž‘ ์–ด๋–ป๊ฒŒ ํ•ด์„œ ์ด๋Ÿฌ์ด๋Ÿฌํ•œ ๊ฒฐ๊ณผ๋ฅผ ์‚ฐ์ถœํ•ด๋‚ด๋ผโ€™ ํ•˜๋Š”๊ฒŒ ๋ช…๋ นํ˜•์œผ๋กœ ์‚ฌ๊ณ ํ•˜๋Š” ๊ฒƒ

      แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ_2022-01-23_แ„‹แ…ฉแ„’แ…ฎ_1 08 12

      แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ_2022-01-23_แ„‹แ…ฉแ„’แ…ฎ_1 08 00

    • ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ โ‡’ ์ด๊ฑฐโ€™๋Š”โ€™ ์ด๊ฑฐ๋‹ค.

    • ํ•จ์ˆ˜ํ˜• ๋ฐฉ์‹์œผ๋กœ ์งœ์ธ ์ˆœ์ˆ˜ ํ•จ์ˆ˜๋“ค์€ ์ธํ’‹๋งŒ ๋˜‘๊ฐ™์œผ๋ฉด ์ ˆ๋Œ€ ๋‹ค๋ฅธ ์š”์ธ์— ์˜ํ•œ ๋ณ€์ˆ˜๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์—, ์ด๊ฑฐโ€™๋Š”โ€™ ์ด๊ฑฐ๋‹ค. ์นด์นด์˜ค๋ฅผ ๋„ฃ์€ ๊ฒฐ๊ณผ๋Š” ๋ฌด์กฐ๊ฑด ์ดˆ์ฝœ๋ ›์ด๋‹ค. ๋ผ๋Š” ๊ฑธ ์žฅ๋‹ดํ•  ์ˆ˜ ์žˆ๋‹ค.

    • ํ•จ์ˆ˜๋„ ๋ณ€์ˆ˜์ฒ˜๋Ÿผ ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. ํ•จ์ˆ˜๋ฅผ ๊ฐ’์œผ๋กœ ๋ณด๊ณ  ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜๋Š” ๊ฒƒ.

      แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ_2022-01-23_แ„‹แ…ฉแ„’แ…ฎ_1 07 42
      ใ…ค

    2. ํ•จ์ˆ˜๋„ โ€˜๊ฐ’โ€™์ด๋‹ค.

    • ํ•จ์ˆ˜๋Š” ๊ฐ’ ํ˜•ํƒœ๋กœ๋„ ์„ ์–ธ๋  ์ˆ˜ ์žˆ๋‹ค.

        var sum: (Set<Int>) -> Int = { $0.reduce(0,+) }
    • ๋ณ€์ˆ˜์— ๋‹ด๊ธด ํ•จ์ˆ˜๋“ค์€ ํ˜ธ์ถœํ•  ์ˆ˜๋„ ์žˆ๊ณ , ๋‹ค๋ฅธ ํ•จ์ˆ˜ ๋“ฑ์— ์ฝœ๋ฐฑ์œผ๋กœ ๋„ฃ์–ด์ค„ ์ˆ˜๋„ ์žˆ๋‹ค.

        var sum: (Set<Int>) -> Int = { $0.reduce(0,+) }
      
        print(sum([1, 2, 3]))
      
        func myFunc(closure: (Set<Int>) -> Int) {
            print(closure([1, 2, 3, 4, 5]))
        }
      
        myFunc(closure: sum)
    • ํ•จ์ˆ˜ ์ž์ฒด๋กœ๋Š” ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ค์ง€ ์•Š๋Š”๋‹ค. ์ธ์ž๋กœ ๋ฌด์–ธ๊ฐ€๊ฐ€ ๋“ค์–ด๊ฐ€์•ผ ๊ฒฐ๊ณผ๊ฐ’์ด ๋‚˜์˜จ๋‹ค.

      แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ_2022-01-23_แ„‹แ…ฉแ„’แ…ฎ_2 07 57 แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ_2022-01-23_แ„‹แ…ฉแ„’แ…ฎ_1 59 30
    • ํ•จ์ˆ˜๊ฐ€ ์ˆœ์ˆ˜ํ•จ์ˆ˜์ผ ๊ฒฝ์šฐ, ์ธํ’‹์œผ๋กœ ํ•˜๋Š” ์ผ์€ ์ผ์ •ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ธ์ž๋กœ ๊ฐ’์„ ๋„ฃ์œผ๋ฉด ์ธ์ž๋กœ์จ ์ ˆ๋Œ€ ์˜ˆ์ธก๊ฐ€๋Šฅํ•œ ๊ฐ’์„ ์•„์›ƒํ’‹์œผ๋กœ ๋‚ด๊ฒŒ ๋˜๋Š” ์ƒํƒœ๋ผ๋Š” ๊ฐ’์œผ๋กœ ํ•จ์ˆ˜๋ฅผ ๋ฐ”๋ผ๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.
      ใ…ค

    3. ๊ณ ๊ณ„ํ•จ์ˆ˜

    • ์ธํ’‹์ด ์žˆ๋Š” ํ•จ์ˆ˜๋Š” ํŠน์ • ๊ฐ’์„ ์ธ์ž๋กœ ๋ฐ›๋Š”๋‹ค.

    • ํ•จ์ˆ˜๋ฅผ ๊ฐ’์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ๋‹ค๋ฉด, ํ•จ์ˆ˜๋„ ๋‹ค๋ฅธ ํ•จ์ˆ˜์— ์ธ์ž๋กœ ๋„ฃ์–ด์ค„ ์ˆ˜ ์žˆ๋‹ค.

    • ์ธ์ž๋กœ ๋‹ค๋ฅธ ํ•จ์ˆ˜๋ฅผ ๋ฐ›์•„ ๊ฒฐ๊ณผ๊ฐ’์„ ๋‚ด๋ณด๋‚ด๋Š” ํ•จ์ˆ˜๋ฅผ ๊ณ ๊ณ„ํ•จ์ˆ˜๋ผ๊ณ  ํ•œ๋‹ค.

    • ๊ฐ’์€ ์ธ์ž๋กœ ์ฃผ์–ด์งˆ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ๊ฒฐ๊ณผ๊ฐ’์œผ๋กœ ๋ฐ˜ํ™˜๋˜๊ธฐ๋„ ํ•œ๋‹ค. ๋‹ค๋ฅธ ํ•จ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜๋„ ๊ณ ๊ณ„ํ•จ์ˆ˜์— ์†ํ•œ๋‹ค.

    • ์•„๋ž˜ ์ฝ”๋“œ๋Š” ๋“ค์–ด์˜จ ์ธ์ž ๊ฐ’์œผ๋กœ ์–ด๋–ค ์—ฐ์‚ฐ์„ ํ• ์ง€ ํŒ๋‹จํ•˜๊ณ , ๊ทธ์— ๋งž๋Š” ํ•จ์ˆ˜๋ฅผ ๋ฆฌํ„ดํ•˜์—ฌ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

        func add(a: Int, b: Int) -> Int { return a + b }
        func sub(a: Int, b: Int) -> Int { return a - b }
        func mul(a: Int, b: Int) -> Int { return a * b }
        func div(a: Int, b: Int) -> Int { return a / b }
      
        func calculate(op: String) -> ((Int, Int) -> Int)? {
            switch op {
            case "add":
                return add(a:b:)
            case "sub":
                return sub(a:b:)
            case "mul":
                return mul(a:b:)
            case "div":
                return div(a:b:)
            default:
                return nil
            }
        }
      
        print(calculate(op: "add")?(2, 5)) // Optional(7)
        print(calculate(op: "mul")?(2, 5)) // Optional(10)
      แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ_2022-01-23_แ„‹แ…ฉแ„’แ…ฎ_5 35 31
    • ์•„๋ž˜ ์ฝ”๋“œ ์„ค๋ช…

      • calculate2 ํ•จ์ˆ˜์— add๋ฅผ ์ธ์ž๋กœ ๋„ฃ์€ ๊ฒฐ๊ณผ๋ฅผ add2์— ๊ฐ’์œผ๋กœ ์ €์žฅํ•˜๊ณ , add2๋Š” ํ•จ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜์ด๋ฏ€๋กœ add2์˜ ๊ฐ’์œผ๋กœ๋Š” ํ•จ์ˆ˜๊ฐ€ ๋“ค์–ด๊ฐ€์žˆ๋Š” ๊ฒƒ์ด๋‹ค.

      • add2์— ์ธ์ž๋กœ (3, 5)๋ฅผ ์ „๋‹ฌํ•˜๋ฉด 3๊ณผ 5๊ฐ€ ๋”ํ•ด์ ธ์„œ 8์ด ์ถœ๋ ฅ๋œ๋‹ค.

      • ์ฆ‰, add2๋Š” calculate2 ํ•จ์ˆ˜์— add ํ•จ์ˆ˜๋ฅผ ์ธ์ž๋กœ ๋„ฃ์œผ๋ฉด, add ํ•จ์ˆ˜์— ์ธ์ž๋กœ ์ „๋‹ฌ๋œ ์ˆซ์ž 2๊ฐœ๊ฐ€ ๋”ํ•ด์ ธ์„œ ๋‚˜์˜ค๋Š” ํ•จ์ˆ˜๊ฐ€ ๋งŒ๋“ค์–ด์ง„ ๊ฒƒ์ด๋‹ค.

      • calculate2์— mul์„ ์ธ์ž๋กœ ์ „๋‹ฌํ•ด์„œ ๋งŒ๋“  mul2 ํ•จ์ˆ˜๋Š” mul2์— 2์™€ 5๋ฅผ ์ธ์ž๋กœ ์ „๋‹ฌํ•˜๋ฉด 10์ด ์ถœ๋ ฅ๋œ๋‹ค.

        func calculate2(_ op: @escaping (Int, Int) -> Int) -> (Int, Int) -> Int {
          return {
              op($0, $1)
          }
        }
        
        let add2 = calculate2(add)
        print(add2(3, 5)) // 8
        
        let mul2 = calculate2(mul)
        print(mul2(2, 5))
    • ํ”„๋กœ๊ทธ๋žจ์ด ๋™์ž‘ํ•˜๋Š” ์ค‘์— ํ•จ์ˆ˜๊ฐ€ ๋งŒ๋“ค์–ด์ง„๋‹ค!
      ใ…ค

    4. ์ปค๋ง

    • add_curry(2)๊ฐ€ ๋จผ์ € ์‹คํ–‰๋œ ํ›„, ๊ทธ ๊ฒฐ๊ณผ

    • ์—ฌ๋Ÿฌ ์ธ์ž๋ฅผ ๋ฐ›๋Š” ํ•จ์ˆ˜์— ์ผ๋ถ€ ์ธ์ž๋งŒ ๋„ฃ์–ด์„œ ๋‚˜๋จธ์ง€ ์ธ์ž๋ฅผ ๋ฐ›๋Š” ๋‹ค๋ฅธ ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด๋‚ผ ์ˆ˜ ์žˆ๋Š” ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ๋ฒ•.

    • ๋ชจ๋“  ์ธ์ž๋“ค์ด ์ค€๋น„๋˜์ง€ ์•Š์•˜์„๋•Œ, ๋ถ€๋ถ„์ ์šฉ๋œ ์ƒํƒœ์˜ ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด๋‚ด์„œ ๋งˆ๋ จํ•ด๋‘๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ํ•จ์ˆ˜์— ์ธ์ž๋กœ ๋„˜๊ฒจ์ฃผ๋Š” ๋“ฑ, ๋กœ์ง์„ ์งœ๋Š” ๋ฐฉ์‹์ด ๋” ํ’์„ฑํ•ด์ง€๊ณ  ์ฝ”๋“œ๋„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.

      แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ_2022-01-23_แ„‹แ…ฉแ„’แ…ฎ_10 44 08

      แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ_2022-01-23_แ„‹แ…ฉแ„’แ…ฎ_10 45 11
      ใ…ค

    5. ํ•จ์ˆ˜ ์ปด๋น„๋„ค์ดํ„ฐ

    • ๋ฐฐ์—ด์ด๋‚˜ ๋ฆฌ์ŠคํŠธ ๊ฐ™์€ ์ปฌ๋ ‰์…˜์—์„œ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ๋Šฅ์ด๋‹ค.

    • ํ•จ์ˆ˜ํ˜• ์–ธ์–ด๋‚˜ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์œ„ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์—๋Š” ์ด๋ ‡๊ฒŒ ์ปฌ๋ ‰์…˜ ๋‚ด์˜ ์š”์†Œ๋“ค์„ ๋‹ค์–‘ํ•˜๊ฒŒ, ์—ฐ์†์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋งŽ์€ ๋„๊ตฌ๋“ค์ด ํƒ‘์žฌ๋˜์–ด์žˆ๋‹ค.

    • ์šฐ๋ฆฌ๊ฐ€ ์ด์ „์—๋Š” ์ง์ ‘ for ๋ฌธ์„ ๋Œ๋ฆฌ๊ณ , ๋ณ€์ˆ˜ ์ง€์ •ํ•ด๊ฐ€๋ฉฐ ํ•˜๋‚˜ํ•˜๋‚˜ ์„ค๊ณ„ํ•˜๊ณ  ์ž‘์—…ํ•ด์•ผํ–ˆ๋˜, ์‹ค์ˆ˜์˜ ์—ฌ์ง€๋„ ์žˆ๊ณ  ๋ถ€์ž‘์šฉ๋„ ๋ถˆ๊ฐ€ํ”ผํ•œ ์ž‘์—…๋“ค์„ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ๋Š” ์ด๋Ÿฐ ๋‹ค์–‘ํ•œ ๋„๊ตฌ๋“ค์˜ ์ž‘๋™๊ณผ ์‚ฌ์šฉ๋ฒ•์„ ์ตํ˜€๋†“์•˜๋‹ค๊ฐ€ ์–ด๋–ป๊ฒŒ ํ™œ์šฉํ• ์ง€ ์ƒ๊ฐํ•ด์„œ ์‚ฌ์šฉํ•˜๋ฉด ๋˜๋Š” ๊ฒƒ.

    • ํ•จ์ˆ˜ํ˜• ์–ธ์–ด๊ฐ€ ์•„๋‹ˆ๋”๋ผ๋„, ReactiveX์—์„œ ์ œ๊ณตํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ด์šฉํ•ด์„œ ๊ฑฐ์˜ ๋ชจ๋“  ์ธ๊ธฐ ์–ธ์–ด๋“ค์—์„œ ์ด๋Ÿฐ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

      แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ_2022-01-23_แ„‹แ…ฉแ„’แ…ฎ_10 57 28

      แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ_2022-01-23_แ„‹แ…ฉแ„’แ…ฎ_11 00 28

      แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ_2022-01-23_แ„‹แ…ฉแ„’แ…ฎ_10 57 48

    • for๋ฌธ์ด๋‚˜ while๋ฌธ ๋“ฑ ๋ฐ˜๋ณต๋ฌธ์˜ ์š”์†Œ๋“ค์€ ํŠน์ • ๋ณ€์ˆ˜์˜ ์ƒํƒœ ๋ณ€ํ™”, ์ฆ‰ ๋ถ€์ˆ˜ํšจ๊ณผ๋ฅผ ํ•„์š”๋กœ ํ•œ๋‹ค. ๋•Œ๋ฌธ์— ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ๋Š” ๋ถ€์ˆ˜ํšจ๊ณผ๋ฅผ ์ผ์œผํ‚ค์ง€ ์•Š๋Š” ์žฌ๊ท€ํ•จ์ˆ˜๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค.

    ใ…ค
    ์ถœ์ฒ˜

    'Swift' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

    [Swift] init(_:radix:uppercase:)  (0) 2022.02.02
    [Swift] init(_:radix:)  (0) 2022.02.02
    [Swift] ๊ณ ์ฐจํ•จ์ˆ˜ (map, filter, reduce)  (0) 2022.01.20
    [Swift] ๋‹จ๋ฝ ํ‰๊ฐ€ (Short-circuit Evaluation), Side Effect  (0) 2022.01.20
    [Swift] zip(_:_:)  (0) 2022.01.14

    ๋Œ“๊ธ€

Designed by Tistory.