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

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

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

共收到 5 条回复
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
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册