在Ruby中切换大小写,使else在Break事件中返回数据



我目前正在学习ruby。我尝试了一小段代码,它将根据城市返回国家

代码:

message = nil
flag = true
while true
print "Enter city name : "
city_name = gets.chomp
message = case city_name
when "Frankfurt" then "It is in germany"

when "Paris" then "It is in France"

else "Not present in memeory!!!"
break
end
puts "Message is : #{message}"
end
puts "Out of the loop"

为什么当我输入法兰克福和巴黎以外的任何其他值时,我只得到"out of loop";打印而非"Not present in memory">

根据我的理解,'then'命令后给出的字符串被返回到变量'message'。为什么在else之后给出的字符串没有返回给变量?当我尝试没有break语句,它似乎工作得很好。

break的文档解释它用于"提前离开一个块";,特别是"从while循环结束";

在你的代码中,那个块是

while true
# ...
end

当调用break时,块立即离开,在end之后继续执行。

正如您已经发现的那样,如果您不想跳出循环,修复方法是删除break。另外,如果没有条件,可以使用loop代替while true

您可能需要指定另一个值来显式地中断循环,例如通过检查empty?string:

loop do
print "Enter city name: "
city_name = gets.chomp
break if city_name.empty?
message = case city_name
when "Frankfurt"
"It is in Germany"
when "Paris"
"It is in France"
else
"Not present in memory!!!"
end
puts "Message is: #{message}"
end
puts "Out of the loop"

的例子:

输入城市名称:Frankfurt(消息是:它在德国输入城市名称:Paris(消息是:它在法国输入城市名称:London(消息显示:Not present in memory!!)输入城市名称:(退出循环

相关内容

  • 没有找到相关文章

最新更新