개발관련/other

Ruby에서 "do… while" 반복문 사용하는 방법

Rateye 2021. 11. 15. 10:56
728x90
반응형
질문 : Ruby에 "do… while"루프가 있습니까?

이 코드를 사용하여 사용자가 이름을 입력하고 프로그램은 빈 문자열을 입력 할 때까지 배열에 이름을 저장합니다 (각 이름 뒤에 Enter 키를 눌러야 함).

people = []
info = 'a' # must fill variable with something, otherwise loop won't execute

while not info.empty?
    info = gets.chomp
    people += [Person.new(info)] if not info.empty?
end

이 코드는 do ... while 루프에서 훨씬 더 멋지게 보입니다.

people = []

do
    info = gets.chomp
    people += [Person.new(info)] if not info.empty?
while not info.empty?

이 코드에서는 임의의 문자열에 정보를 할당 할 필요가 없습니다.

불행히도 이러한 유형의 루프는 Ruby에 존재하지 않는 것 같습니다. 아무도 이것을하는 더 나은 방법을 제안 할 수 있습니까?

답변

주의 :

Ruby의 저자 Matz가 begin <code> end while <condition> Kernel#loop 사용을 제안합니다.

loop do 
  # some code here
  break if <condition>
end

다음은 Matz가 언급 한 2005 년 11 월 23 일 의 이메일 교환입니다.

|> Don't use it please.  I'm regretting this feature, and I'd like to
|> remove it in the future if it's possible.
|
|I'm surprised.  What do you regret about it?

Because it's hard for users to tell

  begin <code> end while <cond>

works differently from

  <code> while <cond>

RosettaCode 위키 에는 비슷한 이야기가 있습니다.

2005 년 11 월에 Ruby를 만든 Yukihiro Matsumoto는이 루프 기능을 후회하고 Kernel # loop 사용을 제안했습니다.

출처 : https://stackoverflow.com/questions/136793/is-there-a-do-while-loop-in-ruby
728x90
반응형