제거됨: do-while

제거됨: do-while

do <body> while <cond> 문법 구성은 더 이상 지원되지 않아요. 대신 while을 어떻게 활용하는지, 그리고 왜 이 구성이 제거됐는지 살펴볼게요.

출처: Scala 3 Reference

본문

문법 구성

do <body> while <cond>

은 더 이상 지원되지 않아요. 대신 아래와 같은 동등한 while 루프를 쓰는 것을 권장해요.

while ({ <body> ; <cond> }) ()

예를 들어, 이렇게 쓰는 대신

do
  i += 1
while (f(i) == 0)

이렇게 써요.

while
  i += 1
  f(i) == 0
do ()

블록을 while의 조건으로 쓰는 아이디어는 "루프 반과 절반(loop-and-a-half)" 문제에 대한 해법이기도 해요. 여기 또 다른 예가 있어요.

while
  val x: Int = iterator.next
  x >= 0
do print(".")

왜 그 구성을 제거했나? (Why Drop The Construct?)

  • do-while은 상대적으로 드물게 쓰이고, while만으로 충실하게 표현할 수 있어요. 그래서 별도의 문법 구성으로 둘 이유가 거의 없어 보여요.
  • 새 문법 규칙 아래에서 do는 문장 연속(statement continuation)으로 쓰이는데, 이것은 문장 시작(statement introduction)으로서의 의미와 충돌할 거예요.