iOS ์•ฑ ๊ฐœ๋ฐœ ์ข…ํ•ฉ๋ฐ˜/TIL

swift_์•ผ๊ตฌ ๊ฒŒ์ž„ ๋งŒ๋“ค๊ธฐ_ํ•ด์„ค ๊ฐ•์˜ ํ›„๊ธฐ

yeggrrr๐Ÿผ 2024. 3. 17. 22:26
728x90


<TIL>
3์ฃผ์ฐจ ๋ฌธ๋ฒ• ์ข…ํ•ฉ๋ฐ˜ ์‹ฌํ™”๊ฐ•์˜ ๊ฐœ์ธ ๊ณผ์ œ ์ œ์ถœ ํ›„, ํ•ด์„ค ๊ฐ•์˜๊ฐ€ ์˜ฌ๋ผ์™”๋‹ค!
[๋‚ด๋ฐฐ์บ ] ๋ฐ•์šฐ์ฐฌ ํŠœํ„ฐ๋‹˜๊ป˜์„œ ํ•ด์„ค ๊ฐ•์˜๋ฅผ ์ œ๊ณตํ•ด์ฃผ์…จ๋‹ค.

๊ฐ•์˜๋ฅผ ๋ณด๋ฉด์„œ, ๋‚ด ํ’€์ด์™€ ์–ด๋–ค ์ ์ด ๋‹ค๋ฅธ์ง€๋ฅผ ๋น„๊ตํ•˜๋ฉด์„œ
๋˜ ๋‹ค๋ฅธ ํ’€์ด ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ๊ณต๋ถ€ํ•˜๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์กŒ๋‹ค.

random(in:) ํ•จ์ˆ˜ ๋Œ€์‹  shuffled()
for๋ฌธ ๋Œ€์‹  map
(์˜ต์…”๋„ ์ œ๊ฑฐ๋ฅผ ์œ„ํ•ด compactMap(_:) ์‚ฌ์šฉ)
๋ฐฐ์—ด์— ์ œ๊ณต๋˜๋Š” enumerated() ํ™œ์šฉ
class ํ™œ์šฉ
while ๋ฌธ์—์„œ continue, break ์‚ฌ์šฉ
switch๋ฌธ ํ™œ์šฉ 

์œ„์— ์ ์€ ๋ถ€๋ถ„๋“ค์—์„œ ์ฐจ์ด์ ์ด ์žˆ์—ˆ๋‹ค.
shuffled๋‚˜ compactMap์˜ ๊ฒฝ์šฐ๋Š” ์ฒ˜์Œ ๋ณด๋Š” ํ•จ์ˆ˜๋ผ์„œ ๊ณต๋ถ€๋ฅผ ํ•ด์•ผํ•  ๊ฒƒ ๊ฐ™๋‹ค.
(์ฐพ์•„๋ณด๊ณ  ๋ฐ‘์— ์ •๋ฆฌํ•  ์˜ˆ์ •)
๊ทธ ๋ฐ–์˜ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•๋“ค๋„ ์•„๋ž˜์— ์ •๋ฆฌํ•˜๋ ค๊ณ  ํ•œ๋‹ค!



shuffled() ํ•จ์ˆ˜

 

shuffled()๋Š” ์ˆœ์„œ๋ฅผ ์„ž์€ ์š”์†Œ๋“ค์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค.

์œ„์— ์˜ˆ์‹œ๋ฅผ ๋ณด๋ฉด, ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‰ฝ๊ฒŒ ์•Œ ์ˆ˜ ์žˆ๋‹ค.


compactMap(_:)

 

compactMap์€
sequence์˜ ๊ฐ ์š”์†Œ์— ๋Œ€ํ•œ ๋ณ€ํ™˜ ์ž‘์—… ๊ฒฐ๊ณผ ์ค‘ nil์ด ์•„๋‹Œ ๊ฒฐ๊ณผ๋งŒ ํฌํ•จํ•˜์—ฌ Array๋กœ ๋ฐ˜ํ™˜ํ•ด์ฃผ๋Š” ํ•จ์ˆ˜์ด๋‹ค.

์œ„ ์˜ˆ์‹œ๋ฅผ ๋ณด๋ฉด, nil๊ฐ’์€ ์ œ์™ธํ•œ ๊ฐ’๋งŒ ๋ฐ˜ํ™˜๋œ ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.
๊ฒฐ๊ณผ๋งŒ ๋‹ค๋ฅผ ๋ฟ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์€ map ํ•จ์ˆ˜์™€ ๋™์ผํ•˜๋‹ค.


enumerated()

 

enumerated()๋Š” ์ธ๋ฑ์Šค๋ฅผ ํ•จ๊ป˜ ๋ฐ˜ํ™˜ํ•ด์ฃผ๋Š” ํ•จ์ˆ˜๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.
์ด ํ•จ์ˆ˜๋Š” "for-in" ๋ฃจํ”„์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜์—ฌ ์š”์†Œ์™€ ์ธ๋ฑ์Šค๋ฅผ ๊ฐ๊ฐ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

์œ„ ์˜ˆ์‹œ๋ฅผ ๋ณด๋ฉด, (index, ์š”์†Œ)๋กœ ๋ฐ˜ํ™˜๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.


์ œ์–ด ์ „๋‹ฌ๋ฌธ
(Control Transfer Statement)


์ œ์–ด ์ „๋‹ฌ๋ฌธ์€ ํŠน์ • ์ฝ”๋“œ์—์„œ ๋‹ค๋ฅธ ์ฝ”๋“œ๋กœ ์ œ์–ด๋ฅผ ์ด๋™ํ•˜์—ฌ
์ฝ”๋“œ์˜ ์‹คํ–‰ ์ˆœ์„œ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

์ œ์–ด ์ „๋‹ฌ๋ฌธ์—๋Š”
continue, break, fallthrough, throw, return์ด ์žˆ๋‹ค.

์ •๋ฆฌํ•  ๋‚ด์šฉ์€ ์•ผ๊ตฌ ๊ฒŒ์ž„์—์„œ ์‚ฌ์šฉ๋๋˜
continue์™€ break์ด๋‹ค!


continue


continue๋Š” ๊ตฌ๋ฌธ ์•„๋ž˜์— ์žˆ๋Š” ์‹คํ–‰ ๊ตฌ๋ฌธ๋“ค์„ ๊ฑด๋„ˆ๋›ฐ๊ณ 
๋‹ค์Œ ๋ฐ˜๋ณต์œผ๋กœ ๋„˜์–ด๊ฐ€๊ฒŒ ํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.


break


๋ฐ˜๋ณต๋ฌธ ํ˜น์ธ switch ๊ตฌ๋ฌธ์—์„œ ์‚ฌ์šฉ๋œ๋‹ค.
๋ฐ˜๋ณต๋ฌธ์—์„œ ์‚ฌ์šฉ๋˜๋ฉด ์ฆ‰์‹œ ๋ฐ˜๋ณต๋ฌธ์„ ์ข…๋ฃŒํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.
switch ๊ตฌ๋ฌธ์—์„œ๋Š” ํŠน์ • case๋ฅผ ์ถฉ์กฑํ•˜๋ฉด ์ข…๋ฃŒํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.


 

728x90