์นดํ…Œ๊ณ ๋ฆฌ ์—†์Œ

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

yeggrrr๐Ÿผ 2024. 2. 22. 15:17
728x90

 

๊ณ ๊ธ‰ ๊ธฐ๋Šฅ 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
โ†’ ๋ฐ•์Šค๋ฅผ ๊นŒ๋ณด์•˜๋”๋‹ˆ ๊ฐ’์ด ์—†์œผ๋ฉด ๋””ํดํŠธ ๊ฐ’์„ ์ฃผ์ž.


< 1. Forced unwrapping optional >

๊ทธ๋ƒฅ
print(carName) ํ•˜๋ฉด,

์˜ต์…”๋„๋กœ ๋œธ.

๋งŒ์•ฝ, ๋ฐ•์Šค์•ˆ์— ์•„๋ฌด๊ฒƒ๋„ ์—†๋‹ค๋ฉด?

์ฆ‰, carName = nil ์ธ ์ƒํƒœ์—์„œ
print(carName!)์„ ํ•œ๋‹ค๋ฉด?


์œ„ ํ™”๋ฉด๊ณผ ๊ฐ™์ด error๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

์ด๋Š” ๋ฐ•์Šค ์•ˆ์— ์–ด๋–ค ๊ฐ’์ด ์žˆ๋‹ค๊ณ  ๋‹จํ˜ธํ•˜๊ฒŒ ์ƒ๊ฐํ•˜๊ณ , ๊น ๋”๋‹ˆ ์—†์—ˆ๋˜ ๊ฒƒ์ด๋‹ค.

์ด๋Ÿฐ ๊ฒฝ์šฐ์—๋Š” Swift์—์„œ ๋„ˆ๋ฌด ๋‹จํ˜ธํ–ˆ๋‹ค๊ณ 
"๊ฐ’์ด ์—†์„ ๋•Œ, ์ด๋ ‡๊ฒŒ ํ•จ๋ถ€๋กœ ๋ฐ•์Šค๋ฅผ ๋œฏ์œผ๋ฉด ์•ˆ๋ผ!!"
๋ผ๊ณ  ๊ฒฝ๊ณ ๋ฅผ ์ค€ ๊ฒƒ์ด๋‹ค.

์ด๋Ÿฐ ๊ฒฝ์šฐ์—๋Š” ์•ฑ์ด ์ฃฝ๋Š” ํฌ๋ž˜์‰ฌ(crash)๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.
๊ทธ๋ž˜์„œ ์œ„์— ๋‚จ๊ฒจ๋†“์€ ์ฃผ์„์— ์“ฐ์—ฌ์žˆ๋‹ค์‹œํ”ผ
์ •๋ง ํ™•์‹คํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๋ฉด ์“ฐ์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.



< 2. Optional binding >

์ด๋Ÿฐ ํฌ๋ž˜์‰ฌ๋ฅผ ๋ฏธ์—ฐ์— ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ
๋ฐ•์Šค๋ฅผ ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ๊นŒ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.

์ด๋ ‡๊ฒŒ if ๋ฅผ ํ™œ์šฉํ•ด์„œ ๊ฐ’์ด ์—†์„ ๋•Œ ์ถœ๋ ฅ๋  ๊ฐ’์„ ์ •ํ•˜์—ฌ
๋ฐ•์Šค๋ฅผ ๊นŒ๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.



< 3. Guard statement >

guard ๋ฌธ์€ ํ•ญ์ƒ ํ•จ์ˆ˜๊ฐ€ ๋๋‚  ์ˆ˜ ์žˆ๊ฒŒ return์„ ์ ์–ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

์œ„ ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด 2๋ฒˆ์—์„œ ๋ดค๋˜ ์ฝ”๋“œ์˜ ๋‹จ๊ณ„๊ฐ€
์ ์  ๋ณต์žกํ•ด์ง€๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
<์ฝ”๋“œ ํ•ด์„>
๋ฐ›์•˜๋˜ String์—์„œ Int๋กœ ์ปจ๋ฒ„ํŒ… ํ–ˆ์„ ๋•Œ,
๋ฐ”์ธ๋”ฉ์ด ๋˜๋Š” ๊ฐ’์ด ์žˆ๋‹ค๋ฉด,
}
print(parsedInt)
์ด ์•ˆ์—์„œ ์‚ฌ์šฉํ•ด๋ผ.
๋งŒ์•ฝ, ๋ฐ”์ธ๋”ฉํ•˜๋Š” ๊ณผ์ •์„ ์‹คํŒจํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด,
์•ˆ์ชฝ์œผ๋กœ ๋“ค์–ด์™€ "Int๋กœ ์ปจ๋ฒ„ํŒ… ์•ˆ๋จ!"์„ ํ”„๋ฆฐํŠธํ•ด๋ผ.
๊ทธ๋ฆฌ๊ณ  returnํ•˜์—ฌ ํ•จ์ˆ˜๋ฅผ ๋น ์ ธ๋‚˜๊ฐ€๋ผ.




< 4. Nil coalescing >


nil์ธ ๊ฒฝ์šฐ์—๋Š” ์–ด๋–ค ํŠน์ •ํ•œ default ๊ฐ’์„ ์ค€๋‹ค๋Š” ๋ง์ด๋‹ค.
์ด๋ฅผ ํ‘œํ˜„ํ•˜๋Š” operator๋Š” ??(๋ฌผ์Œํ‘œ 2๊ฐœ)์ด๋‹ค.


์ฒซ ๋ฒˆ์งธ ํ™”๋ฉด์€ carName = "ํƒฑํฌ" ๋ผ์„œ
"ํƒฑํฌ"

๋‘ ๋ฒˆ์งธ ํ™”๋ฉด์€ carName = nil ์ด๊ธฐ ๋•Œ๋ฌธ์—
๋””ํดํŠธ ๊ฐ’์ธ "ํ…Œ์Šฌ๋ผ ๋ชจ๋ธ S"







 

728x90