このコードを使用して、ユーザーが名前を入力し、プログラムが空の文字列を入力するまでその名前を配列に保存できるようにします (名前を入力するたびに 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 には存在しないようです。これを実行するより良い方法を提案してくれる人はいますか?
ベストアンサー1
注意:
はbegin <code> end while <condition>
Rubyの作者Matzによって拒否されています。代わりに彼は を使用することを提案していますKernel#loop
。例:
loop do
# some code here
break if <condition>
end
こちらはメールのやり取り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>
ロゼッタコードウィキ同様の話があります:
2005 年 11 月、Ruby の作者であるまつもとゆきひろ氏はこのループ機能を残念に思い、Kernel#loop を使用することを提案しました。