while

while은 그 조건이 참인 값이라면 반복해서 본체를 실행합니다.

while some_condition
  do_this
end

조건을 일단 확인하여 참인 값일 경우에 본체가 실행됩니다. 따라서 조건이 거짓인 경우라면 본체가 실행되지 않을 것입니다.

while의 타입은 항상 Nil입니다.

if와 비슷하게, while의 조건이 변수라면 본체에서 해당 변수는 nil이 아니도록 한정됩니다. 조건이 var.is_a?(Type) 테스트일 경우, 본체에서 var은 해당 타입이게 됩니다. 조건이 var.responds_to?(:method)일 경우, var은 해당 메서드를 갖는 타입이게 됩니다.

while 이후 변수의 값은 while 전에 가졌던 값과 while의 본체를 벗어날 때 가졌던 값에 의해 결정됩니다.

a = 1
while some_condition
  # a : Int32 | String
  a = "안녕"
  # a : String
  a.size
end
# a : Int32 | String

반복문 마지막에 조건 확인

본체를 최소한 한 번 실행하고 중지 조건을 확인할 필요가 있다면, 이렇게 할 수 있습니다.

while true
  do_something
  break if some_condition
end

또는 표준 라이브러리의 loop을 이용합니다.

loop do
  do_something
  break if some_condition
end

results matching ""

    No results matching ""