SWIFT ì€ìííž íë¡ê·žëë° 3í swift5 /ìŒê³° ì§ì ì ìœê³ ê³µë¶í ëŽì©ì ì 늬 ì€
â iOS ê³µë¶
1/1(êž)
ch9.구조첎ì íŽëì€
- 구조첎
- íŽëì€
ch10.íë¡íŒí°ì ë©ìë
- íë¡íŒí°
- ì ì¥ íë¡íŒí°
- ì§ì° ì ì¥ íë¡íŒí°
- íë¡íŒí° ê°ìì
- ì°ì° íë¡íŒí°
- íì
íë¡íŒí°
- ì ì¥ íì íë¡íŒí°
- ì°ì° íì íë¡íŒí°
- ë©ìë
- ìžì€íŽì€ ë©ìë
- mutating
- self íë¡íŒí°
- íì ë©ìë
- ìžì€íŽì€ ë©ìë
ch11. ìžì€íŽì€ ìì± ë° ìë©ž
- ìŽëì ëŒìŽì
- ìµì ë íë¡íŒí° íì
- Ʞ볞 ìŽëì ëŒìŽì ì ë©€ë²ììŽìŠ ìŽëì ëŒìŽì (íŽëì€x)
- ìŽêž°í ìì
- failable initializer
- deinitializer(íŽëì€o)
ch12. ì ê·Œì ìŽ
- open
- public
- internal
- fileprivate
- private
ch13.íŽë¡ì
ì¥ì ì ê°ëší íí. íšìë íŽë¡ì ì ìŒì¢ . Ʞ볞ì ì ë¹íì¶ íŽë¡ì
- Ʞ볞 íŽë¡ì
- íí íŽë¡ì
Ʞ볞 íŽë¡ì 륌 ì¡°êž ë ìœêž° ìœê² ë°êŸŒ ê². íšìë ë©ìëì ìêŽížë¥Œ ë«ì í ìì±íŽë ëš.
- íŽë¡ì íí ê°ìí
- 묞맥ì ìŽì©í íì
ì ì¶
ìŽë¯ž ì í©í íì ì ì€ìíê³ ìë€ê³ ì ì¶ -> íŽë¡ì ì 맀ê°ë³ì íì 곌 ë°í íì ì ìëµíì¬ íí ê°ë¥.
- ëšì¶ ìžì ìŽëŠ
첫 ë²ì§ž ì ë¬ìžìë¶í° $0,$1,$2 ... ììë¡ íí. í€ìë in ì¬ì©íìx
- ììì ë°í íí
return ìëµ.
- ì°ì°ì íšì
ì°ì°ì íšì륌 íŽë¡ì ì íšì ì¬ì©
- íì¶ íŽë¡ì
- @escaping íµíŽì ë¹ëêž° ìì ìŒë¡ íšì ì¢ ë£ëê³ ë í ížì¶í íììë íŽë¡ì 륌 ì¬ì©íŽìŒí ë.
- íšì ìžë¶ì ì ìë ë³ìë ììì ì ì¥ëìŽ íšìê° ì¢ ë£ë í ì¬ì©í ì ìë€.
- auto closure
- ìë íŽë¡ì ë ì ë¬ìžì륌 ê°ì§ ìëë€. @autoclosure Ʞ볞ì ì ë¹íì¶ íŽë¡ì .
- íšìì ì ë¬ìžìë¡ ì ë¬íë ííì ìëìŒë¡ ë³ííŽì£Œë íŽë¡ì .
- 묞맥ì ìŽì©í íì
ì ì¶
ch14.ìµì ë 첎ìŽë곌 ë¹ ë¥ž ì¢ ë£
- ìµì
ë 첎ìŽë
- ìµì ëì ìíŽ ìë nil ìŒì§ë 몚륎ë íë¡íŒí°, ë©ìë, ìëžì€í¬ëŠœì ë±ì ê°ì žì€ê±°ë ížì¶í ë ì¬ì©í ì ìë ìŒë šì 곌ì .
- í ëšê³ë¿ë§ ìëëŒ ì¬ë¬ ëšê³ë¡ ë³µì¡íê² ì€ì²©ë ìµì ë íë¡íŒí°ë ë©ìë ë±ì ë§€ë² nil 첎í¬ë¥Œ íì§ ììë ììœê² ì ê·Œ ê°ë¥. í ë¹ë ê°ë¥.
- ìµì ë ë°ìŽëì íµíŽ 결곌ê°ìŽ nil ìŽ ìëì íìžíë ëìì ê°ì ë°ìì¬ ì ìì.
- ë¹ ë¥ž ì¢
ë£
guard ... else {}
- í¹ì 조걎ì ë¶í©íì§ ìë€ë íëšìŽ ëë©Ž ë¹ ë¥Žê² ìœë ëžë¡ì ì€íì ì¢ ë£ ê°ë¥.
- ìœë ì¢ ë£í ëë
return, break, continue, throw
ë±ì ì ìŽë¬ž ì í ëª ë ¹ì ì¬ì©.
ch15.맵,íí°,늬ëì€
- Map맵
- ìì ì ížì¶í ë 맀ê°ë³ìë¡ ì ë¬ë íšì륌 ì€ííì¬ ê·ž 결곌륌 ë€ì ë°íŽì£Œë íšì.
- 컚í ìŽëê° ëŽê³ ìë ê°ê°ì ê°ì 맀ê°ë³ì륌 íµíŽ ë°ì íšìì ì ì©í í ë€ì 컚í ìŽëì í¬ì¥íì¬ ë°í. ìŽë ìë¡ìŽ 컚í ìŽëê° ìì±ëìŽ ë°í.
- íŽë¡ì ííìì ì¬ì©íŽì ê°ëµí ê°ë¥. ë°°ìŽ, ëì ë늬, ìžíž, ìµì ë ë±ìì ì¬ì© ê°ë¥.
- Filteríí°
- 컚í ìŽë ëŽë¶ì ê°ì 걞ë¬ì ì¶ì¶íë ìí . 맵곌 ë§ì°¬ê°ì§ë¡ ìë¡ìŽ 컚í ìŽëì ê°ì ëŽì ë°í.
- 맵곌 íí°ë¥Œ 첎ìžì²ëŒ ì°ê²°íì¬ ì¬ì© ê°ë¥.
- Reduce늬ëì€
- 컚í ìŽë ëŽë¶ì ìœí ìž ë¥Œ íëë¡ í©íë êž°ë¥ì ì€ííë ê³ ì°šíšì.
- 첫ë²ì§ž ííë íŽë¡ì ê° ê° ìì륌 ì ë¬ ë°ì ì°ì°í í ê°ì ë€ì íŽë¡ì ì€íì ìíŽ ë°ííë©° 컚í ìŽë륌 ìííë íí.
- ëë²ì¬ ííë íŽë¡ì ê° ë°ë¡ 결곌ê°ì ë°ííì§ ìë íí. ëì inout 맀ê°ë³ì륌 ì¬ì©íì¬ ìŽêž°ê°ì ì§ì ì°ì°ì ì€í.
ch16.몚ëë
- 컚í
ì€íž
ìµì ëìŽ ì¬êž° íŽë¹. 컚í ìž ë¥Œ ëŽê³ ìë€.
- íšìê°ì²Ž
맵ì ì ì©í ì ìë 컚í ìŽë íì . Array, Dictionary, Set ë±.
- 몚ëë
- flatMap
Map 곌 ë€ë¥Žê² 컚í ì€íž ëŽë¶ì 컚í ì€ížë¥Œ 몚ë ê°ì ìììŒë¡ íííê² íŒì³ì€ë€ë ì믞.
func map<U>(_ transform: (Wrapped) throws -> U) rethrows -> U? func flatMap<U>(_ tranform: (Wrapped) throws -> U?) rethrows -> U?
- flatMap ì íŽë¡ì 륌 ì€ííë©Ž ììì ëŽë¶ 컚í ìŽëê¹ì§ ê°ì ì¶ì¶.
- flatMap ì .none ìŽëê±°ë nil ìŽ ëë ë±ìë ë³ëì ììžì²ëŠ¬ììŽ ë¹ ì»ší ìŽë륌 ë°í.
- flatMap
ch17.ìëžì€í¬ëŠœíž 묞ë²
- ìžì€íŽì€ì ìŽëŠ ë€ì ëêŽížë¡ ê°ìŒ ê°ìŒ ìšì€ìŒë¡ìš ìžì€íŽì€ ëŽë¶ì í¹ì ê°ì ì ê·Œ ê°ë¥.
- íëì íì ìŽ ì¬ë¬ê°ì ìëžì€í¬ëŠœížë¥Œ ê°ì§ ìë ìë€.
//ìëžì€í¬ëŠœíž ì ì 묞ë²
subscript(... : ...) -> ... {}
//ì¬ì©
instance[]
- íì
ìëžì€í¬ëŠœíž
ìžì€íŽì€ê° ìë íì ì첎ìì ì¬ì©í ì ìë ìëžì€í¬ëŠœíž. subscript í€ìë ìì static í€ìë ì¶ê°. íŽëì€ì ê²œì° class í€ìë ì¬ì©ê°ë¥(ìì ì ì¬ì ì ê°ë¥.)
ch18.ìì
- ìì
- ì¬ì ì override
- ë©ìë ì¬ì ì
- íë¡íŒí° ì¬ì ì
- íë¡íŒí°ë¥Œ ì¬ì ìíë€ë ê²ì íë¡íŒí° ìì²Žê° ìëëŒ íë¡íŒí°ì ì ê·Œì, ì€ì ì, íë¡íŒí° ê°ìì ë±ì ì¬ì ìíë ê².
- ìœêž° ì ì© íë¡íŒí°ìëëŒë ììíŽëì€ìì ìœêž°ì°êž° ê°ë¥í íë¡íŒí°ë¡ ì¬ì ì ê°ë¥. ìœêž°ì°êž° ê°ë¥í íë¡íŒí°ë ìœêž° ì ì©ìŒë¡ ì¬ì ì ë¶ê°.
- íë¡íŒí° ê°ìì륌 ì¬ì ìíëëŒë ì¡°ìíŽëì€ì ì ìí íë¡íŒí° ê°ììë ëì.
- ì¬ë°©ì§ ```swift final ~
- íŽëì€ì ìŽëì
ëŒìŽì
- ì§ì ìŽëì
ëŒìŽì (designated initializer)
ìŽëì ëŒìŽì ê° ì ìë íŽëì€ì 몚ë íë¡íŒí°ë¥Œ ìŽêž°ííŽìŒ íë ì묎ê°ì§. ```swift init(맀ê°ë³ìë€) { ìŽêž°í구묞 }
- ížì ìŽëì
ëŒìŽì (convenience initializer)
ì§ì ìŽëì ëŒìŽì 륌 ìì ëŽë¶ìì ížì¶íë€.
convenience init(맀ê°ë³ìë€) { ìŽêž°í구묞 }
- 2ëšê³ ìŽêž°í륌 ìíŽì ë€ê°ì§ ìì íìžì ì§ííë€.
- ìì íŽëì€ì ì§ì ìŽëì ëŒìŽì ê° ë¶ëªšíŽëì€ì ìŽëì ëŒìŽì 륌 ížì¶íêž° ì ì ìì ì íë¡íŒí°ë¥Œ 몚ë ìŽêž°ííëì§ íìž.
- ììíŽëì€ì ì§ì ìŽëì ëŒìŽì ë ììë°ì íë¡íŒí°ì ê°ì í ë¹íêž° ì ì ë°ëì ë¶ëªšíŽëì€ì ìŽëì ëŒìŽì 륌 ížì¶.
- ížì ìŽëì ëŒìŽì ë ìì ì íŽëì€ì ì ìí íë¡íŒí°ë¥Œ í¬íšíì¬ ê·ž ìŽë€ íë¡íŒí°ëŒë ê°ì í ë¹íêž° ì ì ë€ë¥ž ìŽëì ëŒìŽì 륌 ížì¶íŽìŒ í©ëë€.
- ìŽêž°í 1ëšê³ë¥Œ ë§ì¹êž° ì ê¹ì§ë(ìì 첎ìžì ë°ëŒ ìµìì íŽëì€ê¹ì§ì 몚ë ì ì¥ íë¡íŒí°ì ê°ìŽ ìë€ê³ íìžíë ê²) ìŽëì ëŒìŽì ë ìžì€íŽì€ ë©ìë륌 ížì¶í ì ìë€. ë , ìžì€íŽì€ íë¡íŒí°ì ê°ì ìœìŽë€ìŒ ìë ìë€. self íë¡íŒí°ë¥Œ ìì ì ìžì€íŽì€ë¥Œ ëíëŽë ê°ìŒë¡ íì©í ìë ìë€.
- ìŽëì
ëŒìŽì ìì ë° ì¬ì ì
- ììíŽëì€ì ížì ìŽëì ëŒìŽì ê° ë¶ëªšíŽëì€ì ì§ì ìŽëì ëŒìŽì 륌 ì¬ì ìíë ê²œì° override 륌 ë¶ìžë€.
- ììíŽëì€ìì ë¶ëªšíŽëì€ì ížì ìŽëì ëŒìŽì ë ì ëë¡ ížì¶ í ì ìêž°ë묞ì ìŽëë override ë¶ìŽì§ ìëë€.
- ìŽëì
ëŒìŽì ìë ìì
- í¹ì 조걎ìì ë¶ëªšì ìŽëì ëŒìŽì ê° ìëìŒë¡ ììëë€. ì¬ì€ Ʞ볞ì ìŒë¡ ììë°ì ìŽëì ëŒìŽì ë ììíŽëì€ì ìµì íëìŽ ìì§ ììì ì€ìíížììë ììë°ì§ ìëë€. íì§ë§ ëë¶ë¶ì ê²œì° ììíŽëì€ìì ìŽëì ëŒìŽì 륌 ì¬ì ìíŽì€ íìê° ìë€.
- ììíŽëì€ìì íë¡íŒí° Ʞ볞ê°ì 몚ë ì ê³µíë€ê³ ê°ì í ë.
- ê·ì¹1 : ììíŽëì€ìì ë³ëì ì§ì ìŽëì ëŒìŽì 륌 구ííì§ ìëë€ë©Ž ë¶ëªšíŽëì€ì ì§ì ìŽëì ëŒìŽì ê° ìëìŒë¡ ìì.
- ê·ì¹2 : ë§ìœ ê·ì¹1 ì ë°ëŒ ììíŽëì€ìì ë¶ëªšíŽëì€ì ì§ì ìŽëì ëŒìŽì 륌 ìëìŒë¡ ììë°ì ê²œì° ëë ë¶ëªšíŽëì€ì ì§ì ìŽëì ëŒìŽì 륌 몚ë ì¬ì ìíì¬ ë¶ëªšíŽëì€ì ëìŒí ì§ì ìŽëì ëŒìŽì 륌 몚ë ì¬ì©í ì ìë ìí©ìŽëŒë©Ž ë¶ëªšíŽëì€ì ížì ìŽëì ëŒìŽì ê° ëªšë ìë ìì.
- ì구 ìŽëì
ëŒìŽì
required init() {}
- íŽëì€ì ìŽëì ëŒìŽì ìì ëª ìíŽì£Œë©Ž ììë°ë ììíŽëì€ìì ë°ëì íŽë¹ ìŽëì ëŒìŽì 륌 구ííŽì£ŒìŽìŒ í©ëë€. íì§ë§ ìë ìì ê°ë¥.
- ì¬ì ìëšê³Œ ëìì. ížì ìŽëì ëŒìŽì ì곌 ëìì ì구 ìŽëì ëŒìŽì ë ê°ë¥. required ë§ ìì ë¶ìŽë©Ž ëë€.
- ì§ì ìŽëì
ëŒìŽì (designated initializer)
ch19.íì ìºì€í
- ì€íížì íì ìºì€í ì ìžì€íŽì€ì íì ì íìžíê±°ë ìì ì ë€ë¥ž íì ì ìžì€íŽì€ìžì íìží ì ìë ë°©ë²ìŒë¡ ì¬ì©.
- 'is', 'as' ì°ì°ìë¡ ê°ì íì ì íìžíê±°ë ë€ë¥ž íì ìŒë¡ ì í ê°ë¥.
- ë°ìŽí° íì
íìž (is)
- ìŽë€ ìžì€íŽì€ê° ìŽë€ íŽëì€ì ìžì€íŽì€ìžì§ íì ì íìž ê°ë¥. 몚ë ë°ìŽí° íì ì ì¬ì© ê°ë¥.
- ë€ìŽìºì€í
- ë¶ëªšíŽëì€ì íì ì ììíŽëì€ì íì ìŒë¡ ìºì€í .
- as? : ë€ìŽìºì€í ìŽ ì€íšíì ê²œì° nil ë°í. ë°ííì ìŽ ìµì ë.
- as! : ë€ìŽìºì€í ìŽ ì€íšíì ê²œì° ë°íì ì€ë¥ ë°ì. ë°ííì ìŽ ìµì ë x. ì±ê³µíì ê²œì° ìžì€íŽì€ê° ë°í.
- Any,AnyObject
- Any : íšì íì ì í¬íší 몚ë íì ì ë»íš
- AnyObject : íŽëì€ íì ë§ì ë»íš
ch20. íë¡í ìœ
- íë¡í ìœì í¹ì ìí ì íêž° ìí ë©ìë, íë¡íŒí°, êž°í ì구ì¬í ë±ì ì²ì¬ì§. íë¡í ìœì ì구ì¬íì 몚ë ë°ë¥Žë íì ì 'íŽë¹ íë¡í ìœì ì€ìíë€(conform)'ê³ íí.
- ìŠ, íë¡í ìœì ì ì륌 íê³ ì ì륌 í ë¿ìŽì§ ì€ì€ë¡ êž°ë¥ì 구ííì§ ìëë€.
protocol íë¡í ìœìŽëŠ {
íë¡í ìœ ì ì
}
//íë¡í ìœ ì±í
class SomeClass : AProtocol,BProtocol {}
- íë¡í ìœ ì구ì¬í
- íë¡íŒí° ì구
- íë¡í ìœì ì±íí íì ì ì구íë íë¡íŒí°ì ìŽëŠê³Œ íì ë§ ë§ëë¡ êµ¬ííë©Ž ëš. ë€ë§ ìœêž°ì ì©, ìœê³ ì°êž°ë íë¡í ìœìŽ ì íŽìŒíë€.
- íë¡íŒí° ì구ì¬íì íì var í€ìë륌 ì¬ì©í ë³ì íë¡íŒí°ë¡ ì ì.
protocol SomeProtocol { //ìœê³ ì°êž°ê°ë¥ var settableProperty: String { get set } //ìœêž°ì ì© var notNeedToBeSettableProperty: String { get } }
íì íë¡íŒí°ë¥Œ ì구íë €ë©Ž 'static' í€ìë륌 ë³ììì ì¬ì©í©ëë€. ìì ê°ë¥í íì íë¡íŒíì ìž class 곌 static ì 구ë¶íì§ ìê³ ëªšë static ì¬ì©
- ë©ìë ì구
- íë¡í ìœìŽ ì구í ë©ìëë í¬ë¡í ìœ ì ììì ìì±. ì€ì 구íë¶ìž {} ì€êŽíž ë¶ë¶ì ì ìžíê³ ë©ìëì ìŽëŠ, 맀ê°ë³ì, ë°í íì ë±ë§ ìì±.
- íì ë©ìë륌 ì구í ëë ìì 'static' í€ìë륌 ëª ì.
- ê°ë³ ë©ìë ì구
- ë©ìëê° ìžì€íŽì€ ëŽë¶ì ê°ì ë³ê²œí íìê° ìë€. (ê° íì ì ìžì€íŽì€ ë©ìëìì mutating ì¬ì©íŽì ê°ì ë³ê²œíìë€.) > - ì°žì¡° íì ìž íŽëì€ì ë©ìë ììë mutating í€ìë륌 ëª ìíì§ ììë 묞ì ê° ìì§ë§ ê° íì ìž êµ¬ì¡°ì²Žì ìŽê±°íì ë©ìë ììë 'mutating' í€ìë륌 ë¶ìž ê°ë³ ë©ìë ìêµ¬ê° íì.(ìŠ, íŽëì€êµ¬íììë 'mutating' í€ìë륌 ìšì£Œì§ ììë ë©ëë€.)
- ìŽëì
ëŒìŽì ì구
- ë©ìë ì구ì ë§ì°¬ê°ì§ë¡ ìŽëì ëŒìŽì 륌 ì ìíì§ë§ 구íì íì§ ììµëë€.
- 구조첎ë ììí ì ìêž° ë묞ì ìŽëì ëŒìŽì ì구ì ëíŽ ì ê²œìž íìê° ìì§ë§ íŽëì€ì 겜ì°ëŒë©Ž ë€ë¥Žë€.
- 'required' ìë³ì륌 ë¶ìž ì구 ìŽëì ëŒìŽì ë¡ êµ¬í.
- ë¶ëªšíŽëì€ê° íë¡í ìœì ì€ìíë€ë©Ž ììíŽëì€ë ì구ì ë¶í©íë ìŽëì ëŒìŽì 륌 구ííŽìŒíë€. ë¶ëªšíŽëì€ìì ì구 ìŽëì ëŒìŽì 륌 구ííê³ ììíŽëì€ê° ë íë¡í ìœì ì€ìíë€ë©Ž 'override' ì 'required' ë¥Œëª ìíì¬ êµ¬í.
- ìŒë° ìŽëì ëŒìŽì ìžìë ì€íš ê°ë¥í ìŽëì ëŒìŽì 륌 ì구í ìë ìë€. ìŽë íŽë¹ ìŽëì ëŒìŽì 륌 구íí ë ì€íšê°ë¥í( init?() ) ìŽëì ëŒìŽì ë¡ êµ¬ííŽë, ìŒë°ì ìž ìŽëì ëŒìŽì ë¡ êµ¬ííŽë 묎방.
- íë¡í ìœì ìì곌 íŽëì€ ì ì© íë¡í ìœ
- íë¡í ìœì íë ìŽìì íë¡í ìœ ììì ë°ì êž°ì¡Ž íë¡í ìœë³Žë€ ë ë§ì ì구ì¬íì ì¶ê°í ì ìë€. ìì곌 ëìŒíê² íêž°. > - íŽëì€ ì ì© íë¡í ìœë¡ ì íì 죌Ʞ ìíŽìë íë¡í ìœì ìì늬ì€ížì 맚 ì²ìì class í€ìëê° ìì¹íŽìŒ íë€.
- íë¡í ìœ ì¡°í©ê³Œ íë¡í ìœ ì€ì íìž
- íëì 맀ê°ë³ìê° ì¬ë¬ íë¡í ìœì 몚ë ì€ìíë íì ìŽìŽìŒ íë€ë©Ž íëì 맀ê°ë³ìì '&' ì¬ì©íŽì ì¬ë¬ íë¡í ìœì í ë²ì ì¡°í©íì¬ ì구 ê°ë¥.
- 'is' ì 'as' ì°ì°ì륌 íµíŽ íë¡í ìœì ì€ìíëì§ íìžê°ë¥íê³ , í¹ì íë¡í ìœë¡ ìºì€í ê°ë¥.
- íë¡í ìœì ì íì ì구
- íë¡í ìœì ì구ì¬í ì€ ìŒë¶ë¥Œ ì íì ì구ì¬íìŒë¡ ì§ì ê°ë¥.
- ìŽë objc ìì±ìŽ ë¶ì¬ë íë¡í ìœë§ ê°ë¥.(objc ì¬ì©íêž°ìíŽì Foundation íë ììí¬ ëªšëì ìí¬ížíŽì£ŒìŽìŒ íë€.)
> - íŽë¹ ì구ì¬íì íì ì ìëì ìŒë¡ ìµì ëìŽ ëë€. íšì ìì²Žê° ìµì ëìŽ ëë€. - ìµì ë 첎ìŽëì íµíŽ ì íì ì구ì¬íì ížì¶ ê°ë¥.
- íë¡í ìœì ë³ìì ìì
- íë¡í ìœ ìŽëŠë§ìŒë¡ ì€ì€ë¡ ìžì€íŽì€ë¥Œ ìì±íê³ ìŽêž°íí ì ìì§ë§ ížì íë¡í ìœì ì€ìíë íì ì ìžì€íŽì€ë¥Œ í ë¹ ê°ë¥.
- íë¡íŒí° ì구
ch21.ìµì€í ì
- 구조첎, íŽëì€, ìŽê±°í, íë¡í ìœ íì ì ìë¡ìŽ êž°ë¥ì ì¶ê° ê°ë¥. ìë¡ì° êž°ë¥ì ì¶ê°í ì ìì§ë§ êž°ì¡Žì ì¡Žì¬íë êž°ë¥ì ì¬ì ìí ìë ìë€.
- ìµì€í ì ì ì¬ì©íë ëì ìë íì ìŒ ì ìí ìì€ì êž°ë¥ì ì¶ê°íë ë°©ë²ë ìê² ì§ë§, ìžë¶ ëŒìŽëžë¬ëŠ¬ë íë ììí¬ë¥Œ ê°ì žë€ ì¬ì©íë€ë©Ž ì볞 ìì€ë¥Œ ìì íì§ ëª»íë€. ìŽë ìíë êž°ë¥ì ì¶ê°íê³ ì í ë ì¬ì©.
- ììì ìì§ íì¥. ìµì€í ì ì ìí íì¥. ììì êž°ì¡Ž êž°ë¥ì ì¬ì ì ê°ë¥. ìµì€í ì ì ì¬ì ì ë¶ê°.
extension íì¥í íì
ìŽëŠ
//íì
ì ì¶ê°ë ìë¡ì° êž°ë 구í
}
//ìµì€í
ì
ì ì¶ê°ë¡ ë€ë¥ž íë¡í ìœì ì±íí ì ìëë¡ í ì ìë€.
extension íì¥í íì
ìŽëŠ : íë¡í ìœ1, íë¡í ìœ2 {
}
- ì°ì° íë¡íŒí° ì¶ê°
ìµì€í ì ìŒë¡ ì°ì° íë¡íŒí°ë¥Œ ì¶ê° ê°ë¥. ì ì¥ íë¡íŒí° ì¶ê° ë¶ê°. êž°ì¡Žì íë¡íŒí°ì íë¡íŒí° ê°ìì ì¶ê° ë¶ê°
- ë©ìë ì¶ê°
ìžì€íŽì€, ê°ë³, íì ë©ìë ì¶ê° ê°ë¥. ì¬ë¬ ìµì€í ì ëžë¡ìŒë¡ ëë ì 구í ê°ë¥.
- ìŽëì
ëŒìŽì ì¶ê°
íŽëì€ íì ì ížì ìŽëì ëŒìŽì ë ì¶ê°í ì ìì§ë§, ì§ì ìŽëì ëŒìŽì ë ì¶ê° ë¶ê°.
- ìëžì€í¬ëŠœíž ì¶ê°
- ì€ì²© ë°ìŽí° íì ì¶ê°(ch24ìì ììží)
ch22.ì ë€ëŠ
ì ë€ëŠìŒë¡ 구íí êž°ë¥ê³Œ íì ì ì¬ì¬ì©íêž°ë ìœê³ , ìœëì ì€ë³µì ì€ìŒ ì ìë€.
ì ë€ëŠì ì¬ì©íê³ ì íë íì
ìŽëŠ <ì ë€ëŠì ìí íì
맀ê°ë³ì>
- ì ë€ëŠ íšì
- ì€ì íì ìŽëŠ (Int, String ë±) ì ìšì£Œë ëì íë ìŽì€íë(Placeholder) ë³Žíµ T ì죌ì¬ì©. í¹ì 칎ë©ìŒìŽì€ ì¬ì©íì¬ íí.
- íë ìŽì€íëë íì ì ì¢ ë¥ë¥Œ ìë €ì£Œì§ ìì§ë§ ë§ ê·žëë¡ ìŽë€ íì ìŽëŒë ê²ì ìë €ì€. ì€ì íì ì íšìê° ížì¶ëë ìê° ê²°ì ,
- ìŠ, ìŽë€ íì ìŽë ìêŽììŽ ìì©í ì ìëë¡ êµ¬ííë €ê³ íë€ë©Ž Any 륌 ì¬ì©íŽì£Œë©Ž ê·žë§ìŽì§ë§, ì°ëŠ¬ë ê°ì íì ì ëíŽì ìì©íì§ë§ ìŽë€ íì ìŽë ìêŽìë€ëŒë ìí©ìì ì¬ì©.
- ì ë€ëŠ íì
íë ìŽì€íë륌 ì¬ì©íŽì ì ë€ëŠ íì ì ë§ë€ë©Ž íì ì ìž ì ê·ž íì ìë§ ëìí ì ìëë¡ ì íí ì ììŽ ìì íê³ ìëí ëë¡ êž°ë¥ì ì¬ì©íëë¡ ì ë ê°ë¥.
- ì ë€ëŠ íì
íì¥(extension)
ìµì€í ì ì íµíŽ ì ë€ëŠì ì¬ì©íë íì ì êž°ë¥ì ì¶ê°íê³ ì íë€ë©Ž ìµì€í ì ì ìì íì 맀ê°ë³ì륌 ëª ìíì§ ìììŒ í©ëë€. ìëì ì ë€ëŠ ì ìì ëª ìí íì 맀ê°ë³ì륌 ìµì€í ì ìì ì¬ì©í ì ìë€.
- íì
ì ìœ(Type Constraints)
- ì ë€ëŠ íšìê° ì²ëŠ¬íŽìŒí êž°ë¥ìŽ í¹ì íì
ì íì ëìŽìŒë§ ì²ëŠ¬í ì ìë€ëê°. ì ëëŠ íì
ì í¹ì íë¡í ìœì ë°ë¥Žë íì
ë§ ì¬ì©í ì ìëë¡ ì ìœì ë¬ìŒíë ìí© ë°ìí ë ì¬ì©.
- íì ì ìœì íì 맀ê°ë³ìê° ê°ì žìŒ í ì ìœì¬íì ì§ì í ì ìë ë°©ë².
- íì ì ìœì íŽëì€íì ëë íë¡í ìœë§ ì€ ì ìì.
- ì ìœì ì£Œê³ ì¶ìŒë©Ž íì 맀ê°ë³ì ë€ì ìœë¡ ì ë¶ìž í ìíë íŽëì€ íì ëë íë¡í ìœì ëª ì.
- ì¬ë¬ ì ìœì ì¶ê°íê³ ì¶ë€ë©Ž 윀ë§ë¡ 구ë¶íŽì£Œë ê²x. where ì¬ì©.
//Të BinaryInteger íë¡í ìœ ì€ìíê³ , FloatingPoint íë¡í ìœë ì€ìíë íì ë§ ì¬ì©í ì ìë€. func swapTwoValues<T: BinaryInteger>(_ a: inout T, _ b: inout T) where T : FloatingPoint {}
- ì ë€ëŠ íšìê° ì²ëŠ¬íŽìŒí êž°ë¥ìŽ í¹ì íì
ì íì ëìŽìŒë§ ì²ëŠ¬í ì ìë€ëê°. ì ëëŠ íì
ì í¹ì íë¡í ìœì ë°ë¥Žë íì
ë§ ì¬ì©í ì ìëë¡ ì ìœì ë¬ìŒíë ìí© ë°ìí ë ì¬ì©.
- íë¡í ìœì ì°êŽ íì
(Associated Type)
- ì°êŽíì ì íë¡í ìœìì ì¬ì©í ì ìë íë ìŽì€íë ìŽëŠ.
- íì 맀ê°ë³ìì ê·ž ìí ì íë¡í ìœìì ìíí ì ìëë¡ íš.
- íë¡í ìœ ëŽìì ì¡Žì¬íì§ ìë íì ìŒë¡ ì°êŽíì ì ì ìíì¬ íë¡í ìœ ì ìëŽìì íì©. ìŽë€ ê²ìŽìŽë ìêŽìì§ë§, íëì íì ìì ë¶ëª íë€ ëŒë ì믞. íë¡í ìœì ì€ìí ë ì°êŽíì ëì ì ì€ì íì ìŒë¡ 구ííŽì€ë€. ê³ì ìŒêŽì±ìê² êµ¬ííë©Ž ëš. > - ë§ìœ ìŽë€ íì ìŒë¡ ì¬ì©í ì§ ëª íí íŽì£Œê³ ì¶ë€ë©Ž 구íë¶ìì ì§ì ê°ë¥.
typealias íì 맀ê°ë³ììŽëŠ = íì
- ì ë€ëŠ ìëžì€í¬ëŠœíž
ì ë€ëŠ íšì륌 구íí ì ììë ê²ì²ëŒ ìëžì€í¬ëŠœížë 구í ê°ë¥. íì ì ìœë ê°ë¥.
ch23.íë¡í ìœ ì§í¥ íë¡ê·žëë°
- íë¡í ìœ, ìµì€í ì , ì ë€ëŠì ì¡°í
- íë¡í ìœ ìŽêž°êµ¬í
- íë¡í ìœì ì구ì¬íì ìµì€í ì ì íµíŽ 구ííë ê².
- í¹ì íë¡í ìœì ì€ìíë íì ì íë¡í ìœì ì구ì¬íì ì°Ÿìë³Žê³ ìŽë¯ž 구íëìŽ ìë€ë©Ž ížì¶íê³ ìëë©Ž ìŽêž°êµ¬íì êž°ë¥ì ížì¶.
- ì€ìíížì íŽëì€ë ë€ì€ììì ì§ìíì§ ììŒë¯ë¡ ë¶ëªšíŽëì€ì êž°ë¥ìŒë¡ ë¶ì¡±íë€ë©Ž ììíŽëì€ë¥Œ ë€ì 구ííŽìŒ íì§ë§ íë¡í ìœ ìŽêž°êµ¬íì í íë¡í ìœì ì±ííë€ë©Ž ììë ì¶ê° 구íë íì ìë€.
- ììì ì§ìíì§ ìë ê° íì ìž êµ¬ì¡°ì²Ž, ìŽê±°íë ìŽêž°êµ¬íì í íë¡í ìœì ì±ííë€ë©Ž ì¶ê° ê°ë¥.
- Ʞ볞 íì íì¥
- ì€ìíížì Ʞ볞 íì ì íì¥íì¬ ëŽ ìíë êž°ë¥ì ê³µíµì ìŒë¡ ì¶ê° ê°ë¥. ì€ì 구í ìœë륌 ë³Žê³ ìì í ì ìêž° ë묞ì ìµì€í ì , íë¡í ìœ, íë¡í ìœì ìŽêž°êµ¬íì ì¬ì©íŽ êž°ë¥ ì¶ê° ê°ë¥.
ch24.íì ì€ì²©(Nested Types)
- íì ëŽë¶ì íì ì ì ìíê³ êµ¬í ê°ë¥.
- ì€ì²© ë°ìŽí° íì 구í ì ìŽëŠìŽ ê°ëëŒë ìí ìŽ ë¬ëŒìŒ í ë, ìžë¶ì ì ì륌 íë€ë©Ž ê³µì©ìŒë¡ ì¬ì©íì§ ëª»íë€.
ch25.íšíŽ
- íšíŽì 'ëšë ëë ë³µí© ê°ì 구조륌 ëíëŽë ê²'. íšíŽ 맀ì¹ì 'ìœëìì ìŽë€ íšíŽì íí륌 ì°ŸìëŽë íì'
- ì€ìíížì íšíŽì í¬ê² ëê°ì§
- ê°ì íŽì²Ž(ì¶ì¶)íê±°ë 묎ìíë íšíŽ
- ììŒë 칎ë íšíŽ, ìë³ì íšíŽ, ê° ë°ìžë© íšíŽ, íí íšíŽ
- íšíŽ 맀ì¹ì ìí íšíŽ
- ìŽê±°í ìŒìŽì€ íšíŽ, ìµì ë íšíŽ, í¬í íšíŽ, íì ìºì€í íšíŽ
- ê°ì íŽì²Ž(ì¶ì¶)íê±°ë 묎ìíë íšíŽ