2016-06-21 6 views
0

私はscanメソッドをテストして、それをよりよく理解しようとしていました。私はルビーのドキュメントに記載されている例を使用して、それをテストするために私のコマンドラインでIRBを使用していました:IRBを使用する場合、=>演算子の左辺の意味は何ですか?

a = "cruel world" 
a.scan(/(.)(.)/) {|x,y| print y, x } 

は返す必要があります。

rceu lowlr 

をまあ、私はそれを実行したとき、それはrceu lowlr=> "cruel world"を返しました: IRBを使用する場合

$ 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は、画面に印刷された内容の最後に新しい行を自動的に追加しないためです。 printの代わりにputsを使用すると、各文字がそれ自身の行に表示され、=> "cruel world"がそれ自身の行の下に表示されます。

関連する問題