[Kotlin] return, jump

panaxยท2023๋…„ 12์›” 17์ผ
0

Kotlin

๋ชฉ๋ก ๋ณด๊ธฐ
3/5
post-thumbnail

๐ŸŒฎํ๋ฆ„

์ฝ”ํ‹€๋ฆฐ์—์„œ๋Š” ์ฝ”๋“œ ํ๋ฆ„๊ณผ ๊ด€๋ จ๋œ ํ‘œํ˜„์‹์ด ์žˆ๋‹ค.
return: ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๊ณ  ํ•จ์ˆ˜๋ฅผ ์ข…๋ฃŒ
break: ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๋ฐ˜๋ณต๋ฌธ์„ ์ข…๋ฃŒ
continue: ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๋ฐ˜๋ณต๋ฌธ์˜ ๋‹ค์Œ ๋‹จ๊ณ„ ์ง„ํ–‰

๐ŸŒฎlabel

๊ทธ๋ฆฌ๊ณ  ์ฝ”ํ‹€๋ฆฐ์—๋Š” c์˜ goto ๊ฐ™์€ ๊ฒƒ์ด ์žˆ๋‹ค.

loop@ for (i in 0..2) {
	if(...) break@loop
}

๋‹คํ–‰ํžˆ c์˜ goto์™€ ๋‹ฌ๋ฆฌ ๋ฐ˜๋ณต๋ฌธ์—๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

๐ŸŒฎjump

์ผ๋ฐ˜์ ์œผ๋กœ goto๋Š” ์ฝ”๋“œ ์‹คํ–‰ ํ๋ฆ„์ด ๊ผฌ์ด๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ๋œ๋‹ค.
์œ ์ผํ•˜๊ฒŒ ์‚ฌ์šฉ์„ ๊ณ ๋ คํ•ด ๋ณผ ๋ถ€๋ถ„์€ ์ค‘์ฒฉ ๋ฐ˜๋ณต๋ฌธ์„ ํƒˆ์ถœํ•  ๋•Œ๋‹ค.

์ค‘์ฒฉ๋œ ๋ฐ˜๋ณต๋ฌธ์„ ํƒˆ์ถœํ•˜๋ ค๋ฉด ์กฐ๊ฑด๋ฌธ์„ 2๊ฐœ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒŒ ์ผ๋ฐ˜์ ์ด๋‹ค.
ํ•˜์ง€๋งŒ goto๋‚˜ label์„ ์‚ฌ์šฉํ•˜๋ฉด ์ฝ”๋“œ๊ฐ€ ๊ฐ„๊ฒฐํ•ด์ง„๋‹ค.

loop1@ for(i in 0..10) {
     loop2@ for(j in 0..10) {
         if (j == 5) break@loop1
         println("i: $i, j: $j")
     }
 }

๐ŸŒฎreturn

label์€ return์—๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

(0..10).forEach {
    if (it == 5) return@forEach
    println(it)
}

๋ฐ˜๋ณต๋ฌธ์ฒ˜๋Ÿผ ๋ณด์ด๋Š”๋ฐ break๊ฐ€ ์•„๋‹ˆ๋ผ return์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” forEach๋ผ ๊ทธ๋ ‡๋‹ค.
forEach๊ฐ€ ์ต๋ช… ํ•จ์ˆ˜๋ฅผ ์ „๋‹ฌ๋ฐ›์•„ ๋ฐ˜๋ณต๋ฌธ์„ ์‹คํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— return์œผ๋กœ ํ•จ์ˆ˜๋ฅผ ์ข…๋ฃŒํ•ด์•ผ ํ•œ๋‹ค.
forEach๋Š” ์ž๋™์œผ๋กœ label์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— main ํ•จ์ˆ˜๊ฐ€ ๊ฐ™์ด ์ข…๋ฃŒ๋˜์ง€ ์•Š๋Š”๋‹ค.

๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒฝ์šฐ ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

return@a 1
profile
์•ˆ๋“œ๋กœ์ด๋“œ ๊ฐœ๋ฐœ์ž

0๊ฐœ์˜ ๋Œ“๊ธ€