首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Ruby中,循环中的返回值是多少?

在Ruby中,循环中的返回值是多少?
EN

Stack Overflow用户
提问于 2016-11-11 22:24:07
回答 2查看 9.4K关注 0票数 6

使用以下代码:

代码语言:javascript
运行
复制
  def get_action
    action = nil
    until Guide::Config.actions.include?(action)
      puts "Actions: " + Guide::Config.actions.join(", ")
      print "> "
      user_response = gets.chomp
      action = user_response.downcase.strip
    end
    return action
  end

下面的代码接受用户响应,并最终将其操作返回给另一个方法。

我知道循环会不断重复,直到它最终被破坏,但是我对返回值很好奇,所以下次我可以更好地构造循环。在until循环中,我想知道如果存在返回值,until循环是否返回什么值?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-11 22:34:03

循环(loopwhileuntil等)的返回可以是发送给break的任何内容。

代码语言:javascript
运行
复制
def get_action
  loop do
    action = gets.chomp
    break action if Guide::Config.actions.include?(action)
  end
end

代码语言:javascript
运行
复制
def get_action
  while action = gets.chomp
    break action if Guide::Config.actions.include?(action)
  end
end

或者您可以使用begin .. while

代码语言:javascript
运行
复制
def get_action
  begin
    action = gets.chomp
  end while Guide::Config.actions.include?(action)
  action
end

甚至更短

代码语言:javascript
运行
复制
def get_action
  action = gets.chomp while Guide::Config.actions.include?(action)
  action
end

PS:循环本身返回零作为结果(隐式break,即break nil),除非使用显式break "something"。如果您想要分配循环的结果,则应该使用break进行以下操作:x = loop do break 1; end

票数 7
EN

Stack Overflow用户

发布于 2018-04-07 05:01:22

loop也可以不使用break返回值。

代码语言:javascript
运行
复制
def loop_return
  @a = [1, 2, 3 ].to_enum
  loop do
    @a.next
  end
end

print loop_return  #=> [1, 2, 3]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40557171

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档