SWIFT 35

Swift - Array

Array '๋ฌด์–ธ๊ฐ€๋ฅผ ๋‹ด๋Š” ํ†ต'์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. array๋Š” ์ˆœ์„œ์— ๋”ฐ๋ผ์„œ ํ†ต์— ๋‹ด์„ ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค€๋‹ค. ์ด ํ†ต์— ๋‹ด๋Š” ๋ณ€์ˆ˜๋“ค์€ 'element'๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. array๋Š” ๋‘ ๊ฐ€์ง€ ํŠน์ง•์„ ๊ฐ€์ง„๋‹ค. โ‘  ํ†ต์— ๋‹ด์„ ๋•Œ๋Š” ๊ฐ™์€ ํƒ€์ž…์„ ๋‹ด์•„์•ผ ํ•œ๋‹ค. (ex. Int๋ผ๋ฆฌ, String๋ผ๋ฆฌ ...) โ‘ก ์ˆœ์„œ๊ฐ€ ์กด์žฌํ•œ๋‹ค. array ์† element๋“ค์˜ ์ˆœ๋ฒˆ์ด ์กด์žฌํ•œ๋‹ค. ์ด ์ˆœ๋ฒˆ์„ Index๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. (Index๋Š” 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•œ๋‹ค. ๋งˆ์ง€๋ง‰ Index๋Š” (์ „์ฒด ๊ฐฏ์ˆ˜ - 1)๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋จ.) Q. array๋Š” ์–ธ์ œ ์‚ฌ์šฉํ•˜๋ฉด ์œ ์šฉํ• ๊นŒ? ๐Ÿค” โ‘  ์ˆœ์„œ๊ฐ€ ์žˆ๋Š” item โ‘ก item์˜ ์ˆœ์„œ๋ฅผ ์•Œ๋ฉด ์œ ์šฉํ•  ๋•Œ ๊ทธ๋Ÿผ ์ด์ œ๋ถ€ํ„ฐ array๋ฅผ ์–ด๋–ป๊ฒŒ swift๋กœ ๊ตฌํ˜„ํ•˜๊ณ  ์‚ฌ์šฉํ• ์ง€ ์•Œ์•„๋ณด์ž!! :-) < array ๋งŒ๋“ค๊ธฐ, ์š”..

Swift - Optional(์˜ต์…”๋„)_๊ณ ๊ธ‰ ๊ธฐ๋Šฅ

๊ณ ๊ธ‰ ๊ธฐ๋Šฅ 4๊ฐ€์ง€ 1. Forced unwrapping optional 2. Optional binding 3. Guard statement 4. Nil coalescing 1. Forced unwrapping optional → ์–ต์ง€๋กœ ๋ฐ•์Šค๋ฅผ ๊นŒ๋ณด์ž. 2. Optional binding → ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ๋ฐ•์Šค๋ฅผ ๊นŒ๋ณด์ž. 3. Guard statement → ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ๋ฐ•์Šค๋ฅผ ๊นŒ๋ณด์ž 2ํƒ„ (guard๋ฌธ) 4. Nil coalescing → ๋ฐ•์Šค๋ฅผ ๊นŒ๋ณด์•˜๋”๋‹ˆ ๊ฐ’์ด ์—†์œผ๋ฉด ๋””ํดํŠธ ๊ฐ’์„ ์ฃผ์ž. ๊ทธ๋ƒฅ print(carName) ํ•˜๋ฉด, ์˜ต์…”๋„๋กœ ๋œธ. ๋งŒ์•ฝ, ๋ฐ•์Šค์•ˆ์— ์•„๋ฌด๊ฒƒ๋„ ์—†๋‹ค๋ฉด? ์ฆ‰, carName = nil ์ธ ์ƒํƒœ์—์„œ print(carName!)์„ ํ•œ๋‹ค..

Swift - Optional(์˜ต์…”๋„)

Optional ?? Optional์€ swift๋ฅผ ์ฒ˜์Œ ๋ฐฐ์šฐ๋Š” ์‚ฌ๋žŒ๋“ค์ด ๊ฐ€์žฅ ๋งŽ์ด ํ˜ผ๋ž€์Šค๋Ÿฌ์›Œํ•˜๋Š” ๊ฐœ๋… ์ค‘ ํ•˜๋‚˜์ด๋‹ค. ๊ทธ ์ด์œ ๋Š” ์ฝ”๋”ฉ ์ค‘๊ฐ„์— ?(๋ฌผ์Œํ‘œ)๋‚˜ !(๋А๋‚Œํ‘œ)๊ฐ€ ๋ง‰ ์„ž์—ฌ ๋“ค์–ด๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ง€๊ธˆ๋ถ€ํ„ฐ Optional์€ ์–ด๋А ์ƒํ™ฉ์—์„œ ์œ ์šฉํ• ์ง€ ์•Œ์•„๋ณด๋ ค๊ณ  ํ•œ๋‹ค. ์ด๋ฆ„์„ ํ‘œํ˜„ํ•˜๋Š” ๋ณ€์ˆ˜๋“ค์„ ์ •๋ฆฌํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด์ž. var name : String = "Ygenie" var pandaName: String = "Fubao" var carName: String = ??? ์œ„์— ์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ณด๋ฉด, ๋‚˜์˜ ์ด๋ฆ„์„ "Ygenie"๋กœ ํ• ๋‹นํ•˜์˜€๊ณ , ํŒ๋‹ค์˜ ์ด๋ฆ„์„ "Fubao"๋ผ๊ณ  ํ• ๋‹นํ•˜์˜€๋‹ค. ๊ทธ๋Ÿฐ๋ฐ, ๋งŒ์•ฝ ๋šœ๋ฒ…์ด๋ผ ์ž๋™์ฐจ๊ฐ€ ์—†์–ด์„œ ์ด๋ฆ„์„ ํ• ๋‹นํ•  ์ˆ˜ ์—†๋‹ค๋ฉด, ์–ด๋–ป๊ฒŒ ํ‘œํ˜„ํ•ด์•ผ ํ• ๊นŒ? ๋ฌผ๋ก , Boolean ๋ณ€์ˆ˜๋ฅผ ๋‘..

Swift - function

Function Function์€ ์–ด๋–ค ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ฝ”๋“œ ๋ธ”๋Ÿญ์ด๋‹ค. ์ด๋Š” ์•ž์„œ ์ •๋ฆฌํ•œ Method์™€ ์˜๋ฏธ๊ฐ€ ๊ฑฐ์˜ ๊ฐ™๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ๋Œ€์‹ ์— Method ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” ์–ด๋–ค object ์•ˆ์— ์†ํ•ด์„œ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ๋ฐ˜๋ฉด์— Function์€ ๋…๋ฆฝ์ ์œผ๋กœ๋„ ํ˜ธ์ถœ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. Method → object.methodName( ) Function → functionName( ) func printTotalPriceWithDefaultValue(_ price: Int, _ count: Int) { โˆ™โˆ™โˆ™ } printTotalPriceWithDefaultValue(1500, 5) ์œ„์™€ ๊ฐ™์ด (_)๋ฅผ ์•ž์— ์‚ฌ์šฉํ•˜๋ฉด, External parameter name ์—†์ด input va..

Swift - switch(์Šค์œ„์น˜)

Switch switch ๊ตฌ๋ฌธ์˜ ๋™์ž‘ ๋ฐฉ์‹์€ ํ™•์ธํ•˜๋Š” ๋ณ€์ˆ˜๋ฅผ switch๋ฌธ์˜ ์˜†์— ๋‘๊ณ , ๋ธ”๋ก ์•ˆ์—์„œ ์—ฌ๋Ÿฌ ๊ฐ€๋Šฅํ•œ ์ผ€์ด์Šค๋“ค์„ ์ฒดํฌํ•˜๊ณ , ํ•ด๋‹น ์ผ€์ด์Šค์— ๋ถ€ํ•ฉํ•˜๋ฉด ์ฝ”๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋„๋ก ๋งŒ๋“  ๊ฒƒ์ด๋‹ค. ์œ„์™€ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ๋งŒ๋“  ์ฝ”๋“œ๋ฅผ ํ•œ ๋ฒˆ ์‚ดํŽด๋ณด์ž. switch ~ case ์—์„œ num = 10์— ํ•ด๋‹นํ•˜๋Š” ๊ฒฐ๊ณผ๊ฐ€ ์ถœ๋ ฅ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. switch๋ฌธ์—์„œ ์ค‘์š”ํ•œ ๊ฒƒ์€ ๋“ค์–ด์˜ค๋Š” ๋ณ€์ˆ˜์— ๋Œ€ํ•ด์„œ ์ƒ๊ฐํ•ด ๋ณผ ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ์ผ€์ด์Šค์— ๋Œ€ํ•ด์„œ ๋‹ค๋ค„์ฃผ์–ด์•ผ ํ•œ๋‹ค. ์ผ€์ด์Šค๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์€ ๊ฒฝ์šฐ์—๋Š” ์œ„์™€ ๊ฐ™์ด default ์ผ€์ด์Šค๋ฅผ ์ด์šฉํ•ด์„œ ๋‚˜๋จธ์ง€ ์ผ€์ด์Šค์— ๋Œ€ํ•ด์„œ ์ˆ˜ํ–‰ํ•ด์ฃผ๋Š” ์ฝ”๋“œ๋ฅผ ๋‚จ๊ฒจ์ฃผ๋ฉด ๋œ๋‹ค. "dog"์— ํ•ด๋‹นํ•˜๋Š” ์ผ€์ด์Šค๊ฐ€ ์ถœ๋ ฅ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฐ˜๋Œ€๋กœ, pet = "bird" ์ด๋ผ๊ณ  ํ–ˆ๋‹ค๋ฉด, ----> ๋ชจ๋ฅด๋Š” ๋™๋ฌผ์ž…๋‹ˆ..

Swift - Flow Control

Flow Control ์ƒํ™ฉ์— ๋”ฐ๋ผ์„œ ์ฝ”๋“œ๋ฅผ ๊ฑด๋„ˆ๋›ฐ๊ฑฐ๋‚˜, ์–ด๋–ค ์ž‘์—…์„ ๋ฐ˜๋ณต์ ์œผ๋กœ ๋Œ๋ฆฌ๋Š”๊ฑฐ๋‚˜, ํŠน์ • ์กฐ๊ฑด์—๋งŒ ์ˆ˜ํ–‰ํ•˜๋„๋ก ํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฒƒ๋“ค์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋กœ ๋ฐ˜๋ณต๋ฌธ๊ณผ ์กฐ๊ฑด๋ฌธ์ด๋‹ค. - 1 ์ฝ”๋“œ์— ๋Œ€ํ•œ ์„ค๋ช…์€ ์˜†์— ์ฃผ์„ ํ™•์ธ! - 2 ์œ„์— ์žˆ๋Š” ๋‘ ๊ฐ€์ง€ ์ฝ”๋“œ์˜ ๊ฒฐ๊ณผ๋Š” ๊ฐ™๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด, ์ฐจ์ด์ ์€ ๋ฌด์—‡์ผ๊นŒ?๐Ÿง ์ด ๋‘˜์˜ ์ฐจ์ด์ ์€ ์กฐ๊ฑด๋ฌธ์˜ ๊ฒฝ๊ณ„์„  ์ƒ์—์„œ ์ฐจ์ด๊ฐ€ ๋‚œ๋‹ค. ๊ฐ๊ฐ ์ดˆ๊ธฐ๊ฐ’์œผ๋กœ i = 10 ์œผ๋กœ ๋ณ€๊ฒฝํ•ด์„œ ์‹คํ–‰ํ•ด๋ณด๋ฉด, ์œ„์™€ ๊ฐ™์ด while๊ตฌ๋ฌธ์€ ์•ˆ์— ์žˆ๋Š” ๊ตฌ๋ฌธ์ด ์ถœ๋ ฅ๋˜์ง€ ์•Š์•˜๋‹ค. ๋ฐ˜๋ฉด์—, repeat while๊ตฌ๋ฌธ์˜ ๊ฒฝ์šฐ์—๋Š” ์•ˆ์— ์žˆ๋Š” ๊ตฌ๋ฌธ์ด ์šฐ์„  ํ•œ ๋ฒˆ ์ถœ๋ ฅ์ด ๋˜๊ณ , ์ดํ›„ ์ถœ๋ ฅ๋˜์ง€ ์•Š์•˜๋‹ค. ์ฆ‰, while์€ ๋จผ์ € ์กฐ๊ฑด์„ ๊ฒ€์‚ฌํ•œ ํ›„์— ์ฝ”๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค. → ( ์กฐ๊ฑด > ์ฝ”๋“œ์ˆ˜ํ–‰ > ..

Swift - Scope(์Šค์ฝฅ)

Scope(์Šค์ฝฅ) Scope์€ ์ฝ”๋“œ์˜ ๋ฒ”์œ„๋ฅผ ๋งํ•œ๋‹ค. ์ฝ”๋“œ๋Š” ์ ‘๊ทผํ•˜๊ฑฐ๋‚˜ ์ ์šฉ๋˜๋Š” ๋ฒ”์œ„๊ฐ€ ์กด์žฌํ•œ๋‹ค. Scope(์Šค์ฝฅ)์€ Global Scope๊ณผ Local Scope ๋‘ ๊ฐ€์ง€๋กœ ๋ถ„๋ฅ˜๋œ๋‹ค. ๋ถ„๋ฅ˜ ๊ธฐ์ค€์€ ๋ฐ”๋กœ ์ค‘๊ด„ํ˜ธ({ })์ด๋‹ค. { } ๊ฐ€์žฅ ๋ฐ–์€ Global Scope, { } ์•ˆ์€ Local Scope์ด๋‹ค. ์•„๋ž˜ ์˜ˆ์‹œ๋กœ Global Scope๊ณผ Local Scope์„ ๊ตฌ๋ถ„ํ•ด ๋ณด์ž. ๊ธ€๋กœ๋ฒŒ ์Šค์ฝฅ(Global Scope)์— ์„ ์–ธ๋œ ์ƒ์ˆ˜๋Š” fubao์™€ ruiHuiBao์ด๋‹ค. ๋นจ๊ฐ„์ƒ‰์œผ๋กœ ํ‘œ์‹œํ•ด ๋†“์€ ๋ถ€๋ถ„์ด ๋ฐ”๋กœ ๋กœ์ปฌ ์Šค์ฝฅ(Local Scope)์ด๋‹ค. ์œ„ ์˜ˆ์‹œ์™€ ๊ฐ™์ด ๋กœ์ปฌ ์Šค์ฝฅ ์•ˆ์— ํ•˜์œ„ ์Šค์ฝ”ํ”„๋กœ ๋กœ์ปฌ ์Šค์ฝฅ์ด ๋˜ ์กด์žฌํ•  ์ˆ˜ ์žˆ๋‹ค. ๐Ÿ’ก์ฃผ์˜!๐Ÿ’ก ๊ฐ™์€ ์Šค์ฝฅ์—์„œ๋Š” ๊ฐ™์€ ์ƒ์ˆ˜๋ฅผ ๋˜ ์„ ์–ธํ•  ์ˆ˜ ์—†๋‹ค. ๋‹ค๋ฅธ ์Šค์ฝฅ์—์„œ๋Š” ๊ฐ™์€ ์ด..