์ƒˆ์†Œ์‹

๐Ÿ“ฑ iOS/-- Swift 5

(Swift) - ์ผ๊ธ‰ ๊ฐ์ฒด (First class citizen)

  • -

์ผ๊ธ‰ ๊ฐ์ฒด (First class citizen)

 

 

์ผ๊ธ‰ ๊ฐ์ฒด์˜ ์ข…๋ฅ˜

  • ์ •์ˆ˜ ๋ฐ ์‹ค์ˆ˜์™€ ๊ฐ™์ด ๊ฐ„๋‹จํ•œ ์Šค์นผ๋ผ ์ž๋ฃŒํ˜•๋“ค์€ ๋Œ€๋ถ€๋ถ„ ์ผ๊ธ‰ ๊ฐ์ฒด์ด๋‹ค.
  • ์ผ๋ถ€ ๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด์—์„œ๋Š” ํด๋ž˜์Šค๋ฅผ ์ผ๊ธ‰ ๊ฐ์ฒด๋กœ ์ทจ๊ธ‰ํ•œ๋‹ค.

 

 

์ •์˜

  1. ์ผ๊ธ‰ ์‹œ๋ฏผ์„ ๋ณ€์ˆ˜ ๋ฐ ์ƒ์ˆ˜์— ์ €์žฅ ๋ฐ ํ• ๋‹นํ•  ์ˆ˜ ์žˆ์–ด์•ผํ•œ๋‹ค.
  2. ์ผ๊ธ‰ ๊ฐ์ฒด๋ฅผ ์ „๋‹ฌ์ธ์ž(Argument)๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ด์•ผํ•œ๋‹ค.
  3. ๋ณ€์ˆ˜์— ํ• ๋‹น ๊ฐ€๋Šฅ
  4. ๋น„๊ต ์—ฐ์‚ฐ์ด ๊ฐ€๋Šฅ

์œ„ ์ •์˜์—์„œ ์ผ๊ธ‰์‹œ๋ฏผ์„ ํ•จ์ˆ˜๋กœ ์น˜ํ™˜ํ•ด๋ณด๋ฉด ๋ฌด์Šจ๋ง์ธ์ง€ ์ดํ•ดํ•˜๊ธฐ๊ฐ€ ์‰ฝ๋‹ค.

์ฝ”๋“œ๋กœ ์˜ˆ๋ฅผ ๋“ค์–ด๋ณด๋ฉด

 

1. ์ผ๊ธ‰ ์‹œ๋ฏผ์„ ๋ณ€์ˆ˜ ๋ฐ ์ƒ์ˆ˜์— ์ €์žฅ ๋ฐ ํ• ๋‹นํ•  ์ˆ˜ ์žˆ์–ด์•ผํ•œ๋‹ค.

func firstCitizen(param: Int){
  print(param)
}

let constant = firstCitizen

 

2. ์ผ๊ธ‰ ๊ฐ์ฒด๋ฅผ ์ „๋‹ฌ์ธ์ž(Argument)๋กœ ์ „๋‹ฌ ๊ฐ€๋Šฅํ•ด์•ผํ•œ๋‹ค.

func printHello(param: String){
    print(param)
}
func firstCitizen(param: String)-> String{
  return "Hello! \(param)"
}

printHello(param: firstCitizen(param: "Swift"))

>>>>> Hello! Swift

 

3. ๊ฐ์ฒด(ํ•จ์ˆ˜)์—์„œ ์ผ๊ธ‰ ๊ฐ์ฒด๋ฅผ return ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.

func firstCitizen(param: String)-> String{
  return "Hello! \(param)"
}
func printHello()->String{
    return firstCitizen(param : "Swift")
}

print(printHello())

>>>>> Hello! Swift

 

4. ๋น„๊ต ์—ฐ์‚ฐ์ด ๊ฐ€๋Šฅํ•ด์•ผํ•œ๋‹ค. (Swift์˜ ํ•จ์ˆ˜์—์„œ๋Š” ๊ถŒ์žฅ๋˜์ง€ ์•Š๋Š” ๋ฐฉ์‹์ด์ง€๋งŒ)

func firstCitizen(param: String)-> String{
  return "Hello! \(param)"
}

func printHello()->String{
    return firstCitizen(param : "Swift")
}

print(firstCitizen(param: "Swift") == printHello())

>>>>> True    
Contents

ํฌ์ŠคํŒ… ์ฃผ์†Œ๋ฅผ ๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค

์ด ๊ธ€์ด ๋„์›€์ด ๋˜์—ˆ๋‹ค๋ฉด ๊ณต๊ฐ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.