忽略此答案中堆栈溢出的语法突出显示。这是误导。
线
justin.find{|key,value|key=='phone_number
包含以 . 开头的多行字符串的开头phone_number
。由于你还没有完成它——通过输入第二个'
——IRB 礼貌地等待你完成字符串。进入
justin.find{|key,value|key=='phone_number'}
因为第二行导致完成您已经开始的字符串,输入方法调用或局部变量phone_number
,然后添加另一个字符串的开头,现在以}
. 此时 IRB 看到的代码看起来像
justin.find{|key,value|key=="phone_number\njustin.find{|key,value|key=="phone_number'}
它还没有完成——因为最后一个字符串没有终止——所以 IRB 等待更多的输入。
随后的每一个
justin.find{|key,value|key=='phone_number'}
让你留在这个循环中。
Ruby 不会打断你并告诉你有语法错误。原因是 IRB 以每条线¹为基础运作,而您在技术上还没有完成这条线。实际上,表达式中的字符串中有换行符,但代码中没有换行符会导致表达式终止。
现在我希望你的问题的答案是显而易见的。为了让 IRB 退出循环,请输入
'
¹每个表达式会更精确,但在此答案的上下文中,每行是令人满意的。