Ruby中有“do ... while”循环吗?

  • 回答 (2)
  • 关注 (0)
  • 查看 (59)

我使用这个代码让用户输入名字,而程序将它们存储在一个数组中,直到他们输入一个空字符串(他们必须在每个名字之后按回车键):

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中。任何人都可以提出一个更好的方法来做到这一点?

MOISTGMOISTG提问于
梦飞翔758WEB工程师 硬件玩家 CHH不负责版主回答于

喜欢这个:

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

红客学院 · 创始人 (已认证)

道可道 非常道 名可名 非常名回答于

该begin <code> end while <condition>由Ruby的作者Matz的拒绝。相反,他建议使用Kernel#loop,例如

loop do

# some code here

break if <condition>

end

扫码关注云+社区

领取腾讯云代金券