新手问题 ruby 没有 do while 语句吗?

czj · 2019年02月13日 · 最后由 sevk 回复于 2019年02月15日 · 957 次阅读
begin
  code
end while condetion

如上语句能实现 do while 功能, 有没有更简洁的写法实现 do while 功能?

1楼 已删除

do while 不符合人类阅读习惯,请使用while 1; break if; end

i = 0
begin 
   puts i
   i += 1
end while i < 5
i = 0
while i < 5 do
   puts i
   i += 1
end

http://www.runoob.com/ruby/ruby-loop.html

sevk 回复
begin
        s += (cn % 2).to_s
        cn /= 2
end while cn > 0
s.reverse

这是一段将整数 cn 转换为二进制字符串的代码, 若写成 while cn >= 0 *** end 的形式 那么当 cn==0 时会无限循环。如果 条件改成 while cn > 0 那么对于整数 0 不能执行块中的代码,将其转换二进制字符串了,如果将整数 0 做单独处理,又显得累赘了。

czj 回复

据说比较提倡用 break 来实现。

loop
    s += (cn % 2).to_s
    cn /= 2
    break unless cn > 0
end
czj 回复

那还是用 loop { ... } 好了。 或者

loop do
  ...
  break if xxxx
end
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册