Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 如何拥有一个;“转到”;语句/如何建立循环?_Ruby - Fatal编程技术网

Ruby 如何拥有一个;“转到”;语句/如何建立循环?

Ruby 如何拥有一个;“转到”;语句/如何建立循环?,ruby,Ruby,这是困扰我的代码部分: print "Command, please: " command = gets.chomp case.response when 0 exit when 1 puts "Hello, world!" 我希望程序重复打印“命令,请:”部分,并允许我在命令完成后键入另一个“命令”(例如,在命令1之后,我命令程序说“你好,世界!” 因此,我应该添加一个goto语句或类似的东西吗?据我所知,Ruby中没有goto函数。我

这是困扰我的代码部分:

print "Command, please: "
command = gets.chomp
    case.response
    when 0
        exit
    when 1
        puts "Hello, world!"
我希望程序重复打印“命令,请:”部分,并允许我在命令完成后键入另一个“命令”(例如,在命令1之后,我命令程序说“你好,世界!”

因此,我应该添加一个
goto
语句或类似的东西吗?据我所知,Ruby中没有
goto
函数。我尝试用谷歌搜索Ruby中的
goto
函数的替代方案,但我还没有得到一个简单、对初学者友好的答案

或者我应该创建一个从print“Command,please:”开始的循环,并在命令之后使用
redo
函数吗?如果是,我如何建立循环?换句话说,我应该键入什么,以便Ruby知道我希望循环从何处开始


谢谢!

这是一个循环。您可以通过像这样将代码包装在
循环
块中来实现所需的功能

loop do
   # Your program
end

它是一个循环。您可以通过将代码包装在一个
循环
块中来实现所需

loop do
   # Your program
end
试试这个:

loop do # Edit: more Rubyesque than 'while true', see comments and other answers.
  print "Command, please: "
  command = gets.chomp
  case command
    when "0"
      exit
    when "1"
      puts "Hello, world!"
  end
end
注:

case命令
-您正在检查命令变量,而不是case对象上的
响应
方法

当“0”时
-返回的始终是字符串,因此它永远不会匹配
0
-整数

end
-您已经打开了一个案例陈述。

尝试以下操作:

loop do # Edit: more Rubyesque than 'while true', see comments and other answers.
  print "Command, please: "
  command = gets.chomp
  case command
    when "0"
      exit
    when "1"
      puts "Hello, world!"
  end
end
注:

case命令
-您正在检查命令变量,而不是case对象上的
响应
方法

当“0”时
-返回的始终是字符串,因此它永远不会匹配
0
-整数


结束
-你已经打开了一个案例陈述。

看看看看
循环
,嗯?我有一个新的…:DAhmad,这一定是你有过的最简单的30分和计算代表积分的方法了!:-)
循环
,嗯?我穿上新的…:达赫玛德,这一定是最简单的30分了,算一下你赢得的积分吧!:-)<代码>循环执行而不是
,而为true
。是的,更具idomatic。另外,
loop
通过中断循环来处理异常
StopIteration
,这在使用枚举数时通常很方便。如果枚举器
enum
位于枚举的末尾,
e.next
e.peek
将引发
StopIteration
异常。我喜欢S.O.的评论多于问题和答案。答案已更新。
循环执行
而不是
,而为true
。是的,更为自动化。另外,
loop
通过中断循环来处理异常
StopIteration
,这在使用枚举数时通常很方便。如果枚举器
enum
位于枚举的末尾,
e.next
e.peek
将引发
StopIteration
异常。我喜欢S.O.的评论多于问题和答案。答案已更新。