我正在测试scan
方法以尝试更好地理解它。我在命令行中使用IRB来测试它,使用ruby文档中提供的示例:
a = "cruel world"
a.scan(/(.)(.)/) {|x,y| print y, x }
应该返回:
rceu lowlr
好吧,当我运行它时,它确实返回rceu lowlr=> "cruel world"
:
$ irb
irb(main):001:0> a = "cruel world"
=> "cruel world"
irb(main):002:0> a.scan(/(.)(.)/) {|x,y| print y, x }
rceu lowlr=> "cruel world"
irb(main):003:0>
通常在使用IRB时,=>
的左侧为空白,右侧为返回值。在这种情况下,左侧是返回值...而右侧只是...如果拼写正确,返回值是多少?为什么呢?
答案 0 :(得分:8)
=>
表示您刚刚运行的任何代码的返回值。也就是说,如果我设置
b = a.scan(/(.)(.)/) {|x,y| print y, x }
然后b
的值为cruel world
。它没有出现在新行上的原因是print
不会在打印到屏幕的任何内容的末尾自动添加新行。如果您使用puts
代替print
,则会看到每个字符都显示在自己的行上,而=> "cruel world"
则显示在其自己的行的底部。