2016-06-21 80 views
0

我正在測試scan方法以嘗試並更好地理解它。我是用IRB在我的命令行來測試它,使用Ruby文檔中提供的示例:使用IRB時,=>運算符左側的意義是什麼?

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> 

通常,當使用內部評級法,在=>的左側是空白,而右側是返回值。在這種情況下,左側是返回值,右側是......如果拼寫正確,返回值是什麼?爲什麼?

回答

8

=>指示您剛剛運行的任何代碼的返回值。也就是說,如果我設置

b = a.scan(/(.)(.)/) {|x,y| print y, x } 

那麼b的價值將是cruel world。它沒有出現在新行上的原因是print不會在打印到屏幕上的任何末尾自動添加新行。如果您使用puts而不是print,您會看到每個字符都出現在自己的行上,並且=> "cruel world"出現在自己行的底部。