2016-08-25 16 views
0
File.open("db/quotes/#{id}.json", "w") do |f| 
      f.write <<TEMPLATE 
      { 
      "submitter": "{hash["submitter"]}", 
      "quote": "{hash["quote"]}", 
      "attribution": "{hash["attribution"]}" 
      } 
      TEMPLATE 
end 

このメソッドの機能を理解しています。このコードスニペットを本から読みました。 #{id} .jsonという名前のファイルにjsonに書き込もうとしています。私はこれまでにそれを見たことがない。 "< <"は演算子ですか? "TEMPLATE"とは何ですか? Btw、これは本の中でルビーをレールに再構築したものです。再構築のセクションでは、Modelレイヤーでコードスニペットが見つかりました。それは、宝石「エルバス」と関係があります。以下のコードスニペットでf.write << TEMPLATEとは何ですか?

答えて

3

f.writeは、文字列を引数として受け取り、その文字列をファイルfに書き込みます。

<<TEMPLATEは、次の出現時に終了する文字列をTEMPLATEで開始します。この種の文字列はheredocsと呼ばれます。

2

文字列の構文はhere-documentです。これは、複数の行にまたがる文字列を表現する方法であり、インデントは保存されます。

str = <<EOF 
this will be the content 
of your string 
EOF 

EOFを置く場所を任意に選択できます。

1

他の回答が正しい方向にheredocsを指しています。

技術的には、これは文字列が終了しないという構文エラーです。

begin 
    str = <<EOS 
    This is my string 
    EOS 
end 

行の先頭にあるEOSです。以下の例では動作します:

begin 
    str = <<-EOS 
    This is my string 
    EOS 
end 

begin 
    str = <<EOS 
    This is my string 
EOS 
end 

には、次のあなたはどうしたら正しくインデントのコードを持っているために

関連する問題