λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
iOS 🍎/Swift

Swift10 - first class citizen

by yongmin.Lee 2021. 2. 2.

1κΈ‰κ°μ²΄λž€?

- 컴퓨터 ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄ λ””μžμΈμ—μ„œ, μΌκΈ‰ κ°μ²΄λž€ λ‹€λ₯Έ 객체듀에 일반적으둜 적용 κ°€λŠ₯ν•œ 연산을 λͺ¨λ‘ μ§€μ›ν•˜λŠ” 객체λ₯Ό 가리킨닀.

- 보톡 ν•¨μˆ˜μ— λ§€κ°œλ³€μˆ˜λ‘œ λ„˜κΈ°κΈ°, μˆ˜μ •ν•˜κΈ°, λ³€μˆ˜μ— λŒ€μž…ν•˜κΈ°μ™€ 같은 연산을 지원할 λ•Œ 일급 객체라고 ν•œλ‹€.

- μΌκΈ‰κ°μ²΄λŠ” 무슨 ν˜œνƒμ„ λ°›λŠ”λ‹€λŠ” 게 μ•„λ‹ˆλΌ, μ‚¬μš©ν•  λ•Œ λ‹€λ₯Έ μš”μ†Œλ“€κ³Ό μ•„λ¬΄λŸ° 차별이 μ—†λ‹€λŠ” 것을 λœ»ν•œλ‹€.

- μ •μˆ˜μ™€ μ‹€μˆ˜μ²˜λŸΌ κ°€μž₯ κ°„λ‹¨ν•œ μŠ€μΉΌλΌ μžλ£Œν˜•μ€ λŒ€λΆ€λΆ„ 일급 객체이닀.

- μŠ€μœ„ν”„νŠΈμ—μ„œλŠ” ν΄λ‘œμ €λ₯Ό 톡해 μΌκΈ‰ν•¨μˆ˜λ₯Ό κ΅¬ν˜„

 

일급 객체와 이급 객체. 

ALGOLμ—μ„œ μ‹€μˆ˜λŠ” ν‘œν˜„μ‹μ— μ‚¬μš©ν•˜κ±°λ‚˜ λ³€μˆ˜μ— ν• λ‹Ήν•  수 있으며, ν”„λ‘œμ‹œμ €μ— λ§€κ°œλ³€μˆ˜λ‘œ λ„˜κ²¨μ§ˆ 수 μžˆλ‹€. ν•˜μ§€λ§Œ ν”„λ‘œμ‹œμ €μ˜ 경우 ν”„λ‘œμ‹œμ € μ½œμ—μ„œ 호좜 λŒ€μƒ ν˜Ήμ€ 맀개 λ³€μˆ˜λ‘œ λ“±μž₯ν•  수 μžˆμ„ 뿐이며, ν”„λ‘œμ‹œμ €λ₯Ό λ°˜ν™˜ν•˜λŠ” ν”„λ‘œμ‹œμ €λŠ” μ—†λ‹€. 이런 μΈ‘λ©΄μ—μ„œ ALGOLμ—μ„œμ˜ ν”„λ‘œμ‹œμ €λŠ” 이급 μ‹œλ―Όμ΄λ‹€. μ–Έμ œλ‚˜ 직접 λ‚˜νƒ€λ‚˜μ•Ό ν•˜λ©° λ³€μˆ˜λ‚˜ μ—°μ‚°μ‹μœΌλ‘œ λŒ€μ‹  λ‚˜νƒ€λ‚Ό 수 μ—†κΈ° λ•Œλ¬Έμ΄λ‹€.

 

일급객체 쑰건

λͺ¨λ“  일급 κ°μ²΄λŠ” ν•¨μˆ˜μ˜ μ‹€μ§ˆμ μΈ λ§€κ°œλ³€μˆ˜κ°€ 될 수 μžˆλ‹€.

λͺ¨λ“  일급 κ°μ²΄λŠ” ν•¨μˆ˜μ˜ λ°˜ν™˜κ°’μ΄ 될 수 μžˆλ‹€.

λͺ¨λ“  일급 κ°μ²΄λŠ” ν• λ‹Ήμ˜ λŒ€μƒμ΄ 될 수 μžˆλ‹€.

λͺ¨λ“  일급 κ°μ²΄λŠ” 비ꡐ μ—°μ‚°(==, equal)을 μ μš©ν•  수 μžˆλ‹€

 

일급 객체이기 λ•Œλ¬Έμ— ν•  수 μžˆλŠ” 것

콜백 νŒ¨ν„΄ μ„ μ‚¬μš©ν•  수 μžˆλ‹€.

κ³ μ°¨ν•¨μˆ˜(High-order function) λ₯Ό λ§Œλ“€ 수 μžˆλ‹€.