[UMC] 1์ฃผ์ฐจ๐Ÿ’ป - ๋ถ€์ŠคํŠธ์ฝ”์Šค ์ฝ”ํ‹€๋ฆฐ ์ˆ˜๊ฐ•(3)

Madeline๐Ÿ‘ฉ๐Ÿปโ€๐Ÿ’ปยท2022๋…„ 9์›” 22์ผ
0

kotlin study

๋ชฉ๋ก ๋ณด๊ธฐ
3/19

3์žฅ ํ•จ์ˆ˜

  1. ํ•จ์ˆ˜์˜ ์„ ์–ธ

fun sum(a: Int, b: Int): Int{//์ตœ์ƒ์œ„ ํ•จ์ˆ˜
return a + b
}

=>

fun sum(a: Int, b: Int): a + b

์ด๋ ‡๊ฒŒ ์ค„์—ฌ์„œ ์“ธ ์ˆ˜ ์žˆ์Œ

  1. default ๊ฐ’

์ดˆ๊ธฐ๊ฐ’์„ ํ•จ์ˆ˜์— ๋ฏธ๋ฆฌ ์ฃผ๋ฉด, ์ธ์ž๋กœ ์ „๋‹ฌ ์•ˆ๋ฐ›์•˜์„ ๋•Œ ์‚ฌ์šฉ!
์ธ์ž๋กœ ๋‹ค๋ฅธ ๊ฐ’์ฃผ๋ฉด ์ดˆ๊ธฐ๊ฐ’ ๋ฌด์‹œ!

  1. ๊ฐ€๋ณ€์ธ์ž๋ฅผ ๊ฐ€์ง„ ํ•จ์ˆ˜

vararg

๐Ÿ’จ์˜ˆ์ œ: ํ‰๊ท  ๊ตฌํ•˜๊ธฐ

๋ชฉํ‘œ: ํ•˜๋‚˜ ์ด์ƒ์˜ ์‹ค์ˆ˜๋ฅผ ๋ฐ›์•„์„œ ๋ชจ๋“  ์‹ค์ˆ˜์˜ ํ•ฉ์˜ ํ‰๊ท ์„ ๊ตฌํ•˜๊ณ  ์ถœ๋ ฅ ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๊ตฌํ˜„ํ•ด ๋ณด์„ธ์š”!

์ดˆ๊ธฐ๊ฐ’์„ ์œ„ํ•œ ์ธ์ž๋Š” Floatํ˜•
์ดˆ๊ธฐ๊ฐ’์€ ๋‘๋ฒˆ์งธ ๋ถ€ํ„ฐ ๋‚˜์—ด๋œ ์ธ์ž์˜ ์ตœ์ข… ํ‰๊ท  ๊ฒฐ๊ณผ์— ๋”ํ•จ
์ดˆ๊ธฐ๊ฐ’์— ์•„๋ฌด๋Ÿฐ ์ธ์ž๋ฅผ ์ž…๋ ฅํ•˜์ง€ ์•Š์œผ๋ฉด 0์„ ๊ธฐ๋ณธ ์‚ฌ์šฉ
๋‘๋ฒˆ์งธ๋ถ€ํ„ฐ ๋ฐ›์•„๋“ค์ผ ์ธ์ž๋Š” ๊ฐ€๋ณ€ํ˜• ์ธ์ž๋กœ ๋ชจ๋‘ ์‹ค์ˆ˜ํ˜• Float
๋ฐ˜ํ™˜๊ฐ’์€ ๋ชจ๋“  ์ธ์ž์˜ ํ‰๊ท ๊ฐ’์œผ๋กœ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์‹ค์ˆ˜ํ˜• Double

  1. ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ(FP)
    -์ฝ”๋“œ ๊ฐ„๋žต, ํ…Œ์ŠคํŠธ๋‚˜ ์žฌ์‚ฌ์šฉ์„ฑ ์ฆ๊ฐ€
    -๋žŒ๋‹ค์‹, ๊ณ ์ฐจ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌ์„ฑ: ํ•จ์ˆ˜ ์ž์ฒด๋ฅผ ๋งค๊ฐœ๋ณ€์ˆ˜, ์ธ์ˆ˜๋กœ ์‚ฌ์šฉํ•˜๊ณ , ํ•จ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•  ์ˆ˜๋„ ์žˆ์Œ
    -์ˆœ์ˆ˜ ํ•จ์ˆ˜

1) ์ˆœ์ˆ˜ํ•จ์ˆ˜ Pure Function
-๋ถ€์ž‘์šฉ์ด ์—†๋Š” ํ•จ์ˆ˜: ์ž…๋ ฅ์ด ๋˜‘๊ฐ™์œผ๋ฉด ์ถœ๋ ฅ๋„ ๋˜‘๊ฐ™๋‹ค!
(๋ถ€์ž‘์šฉ์ด ์žˆ๋Š” ํ•จ์ˆ˜: ์ž…๋ ฅ์ด ๋˜‘๊ฐ™์•„๋„ ์ถœ๋ ฅ์ด ๋‹ฌ๋ผ์„œ ์˜ˆ์ธก ๋ถˆ๊ฐ€๋Šฅํ•จ)

-๊ฐ’์ด ์˜ˆ์ธก ๊ฐ€๋Šฅํ•ด ๊ฒฐ์ •์ (deterministic)์ด๋‹ค.

fun sum (a: Int, b: Int): Int {
return a+b
}

๋งŒ์ผ a=2, b=1์ด๋ฉด ์•„๋ฌด๋ฆฌ ๋ฐ˜๋ณตํ•ด๋„ ๊ฒฐ๊ณผ๊ฐ’์ด 3์ž„ => ์ˆœ์ˆ˜ํ•จ์ˆ˜

  • ์ˆœ์ˆ˜ํ•จ์ˆ˜์˜ ์กฐ๊ฑด
    -๊ฐ™์€ ์ธ์ž์— ๋Œ€ํ•ด ํ•ญ์ƒ ๊ฐ™์€ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
    -ํ•จ์ˆ˜ ์™ธ๋ถ€์˜ ์–ด๋–ค ์ƒํƒœ๋„ ๋ฐ”๊พธ์ง€ ์•Š๋Š”๋‹ค.
    -์™ธ๋ถ€์˜ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ๋œ๋‹ค!

-> ์žฌ์‚ฌ์šฉ์„ฑ์ด ๋†’๊ณ , ๋ณ‘ํ–‰ ์ž‘์—… ์‹œ ์•ˆ์ „ํ•˜๋‹ค
-> ํ•จ์ˆ˜๋ฅผ ๋ณ€์ˆ˜๋‚˜ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์— ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค!!

=> ์ฝ”ํ‹€๋ฆฐ์—์„œ ํ•จ์ˆ˜๋Š” 1๊ธ‰ ๊ฐ์ฒด๋กœ ๋‹ค๋ฃฌ๋‹ค (1๊ธ‰ ํ•จ์ˆ˜๋ผ๊ณ ๋„ ํ•œ๋‹ค)

val abc = <ํ•จ์ˆ˜> // ๊ฐ€๋Šฅ!

2) ๋žŒ๋‹ค์‹์ด๋ž€?
-์ต๋ช…ํ•จ์ˆ˜์˜ ํ•˜๋‚˜๋กœ, ์ด๋ฆ„ ์—†์ด ์‚ฌ์šฉ, ์‹คํ–‰ ๊ฐ€๋Šฅ
{x,y -> x+y}

3) ๊ณ ์ฐจ ํ•จ์ˆ˜๋ž€?

fun main(){
println(highfunc({x,y -> x+y}, 10, 20)) //๋žŒ๋‹ค์‹ ํ•จ์ˆ˜๋ฅผ ์ธ์ž๋กœ ๋„˜๊ธด๋‹ค
}

fun highFunc(sum:(Int, Int)-> Int, a: Int, b:Int): Int = sum(a,b) //sum ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ํ•จ์ˆ˜!

์ˆœ์„œ๋ฅผ ๋ฐ”๊ฟ”์„œ ์จ๋„ ๋œ๋‹ค!

profile
Major interest in iOS ๐Ÿ€ & ๐ŸŽ

0๊ฐœ์˜ ๋Œ“๊ธ€