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中似乎不存在这种类型的循环。有人可以建议一种更好的方法吗?


手掌心
浏览 703回答 3
3回答

眼眸繁星

注意:该begin <code> end while <condition>由Ruby的作者Matz的拒绝。相反,他建议使用Kernel#loop,例如loop do&nbsp;&nbsp; # some code here&nbsp; break if <condition>end&nbsp;这是2005年11月23日的电子邮件交流,其中Matz说:|> Don't use it please.&nbsp; I'm regretting this feature, and I'd like to|> remove it in the future if it's possible.||I'm surprised.&nbsp; What do you regret about it?Because it's hard for users to tell&nbsp; begin <code> end while <cond>works differently from&nbsp; <code> while <cond>RosettaCode Wiki具有类似的故事:在2005年11月,Ruby的创建者Matsuki Yukihiro Matsumoto对这个循环功能感到遗憾,并建议使用Kernel#loop。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Ruby