2011-03-10 6 views
2

ルビーの "shift left"の意味は何ですか?Rubyでは左シフトの意味は何ですか?

たとえば、私はこの

File.open(folder, 'w'){ |f| f << datavalue } 

を持って、私はそれがフォルダに各DataValueはを書くことを意味していることを知っているが、|f| f << datavalue部分は私には意味がありません。なぜ左にシフトするか、フォルダにデータ値を書き込むかに関して、fがブラケットの内側にあるのですか?

基本的に、私はtは

{ |f| f << datavalue } 
+1

私はRuby言語の紹介を読むことを検討するべきだと思います。初心者のためのRubyチュートリアルがたくさんあります。それはあなたがあなたが得た答えを理解するのに役立ちます。 http://stackoverflow.com/questions/5259332/ruby-write-value-from-sql-table-to-a-tmp-folder –

答えて

4

File.open(folder, 'w'){ |f| f << datavalue }この行の意味を理解ドン "は書き込みと同じです:

File.open(folder, 'w') do |f| 
    f << datavalue 
end 

どちらも、Rubyのブロック表記の一例であり、Rubyでブロックは匿名です。この場合、変数fは、File.openコマンドで返されるファイルオブジェクトを表します。

については、<<演算子に関してです。ここでは連結子として使用されています。私はそれがオブジェクト(文字列、配列、この場合はファイル)上で使用されるとき、追加演算子と呼ばれると考えています。例外は、オブジェクトが数値である場合です。これは、数値のビットをシフトする左シフト演算子になるときです。

0
some_text = "world!" 
hello = "Hello, " 

hello << some_text 

puts hello # prints "Hello, world!"