template = <<-TPL.gsub(/^\s+/,'')
╭───────╮
| X X X |
| X X X |
| X YYX |
| X X X |
╰───────╯
TPL
これはgem rubycards
のスニペットです。<<はルビの意味ですか?
テンプレートに文字列を格納していることを理解しています。しかし、<<-
は何をしますか?
template = <<-TPL.gsub(/^\s+/,'')
╭───────╮
| X X X |
| X X X |
| X YYX |
| X X X |
╰───────╯
TPL
これはgem rubycards
のスニペットです。<<はルビの意味ですか?
テンプレートに文字列を格納していることを理解しています。しかし、<<-
は何をしますか?
それはheredocと呼ばれている:
あなたが使用することができ、テキストの大きなブロックを作成している場合は、「ここに文書」 または「ヒアドキュメント」:
expected_result = <<HEREDOC This would contain specially formatted text. That might span many lines HEREDOC
ヒアドキュメントは上を開始< < HEREDOCの行に続き、HEREDOCで始まる の次の行で終わります。結果には、改行の末尾に が含まれます。
heredocで任意の識別子を使用できますが、通常はすべて大文字の 識別子が使用されます。
あなたが置く場合は、終了識別子をインデントする「 - 」< <後:決算識別子をインデントすることができるが、それはフラッシュであるかのように、 コンテンツが常に扱われること
expected_result = <<-INDENTED_HEREDOC This would contain specially formatted text. That might span many lines INDENTED_HEREDOC
注意を左。 の内容をインデントすると、それらのスペースが出力に表示されます。
残念ながら、Rubyの<<
オペレータには多くの用途があります。しかし、具体的なケースでは、<<
は、複数の行にまたがる文字列を宣言するために使用されます。これは、あなたが標準出力を見て行列を得ることができます。
What does << mean in Ruby?は、この機能はここにドキュメントと呼ばれている他の多く
質問は '<< - 'ではなく、 '<<'ではありません。 –
申し訳ありませんが、TPLはインデントされていないので、私は彼が何のためのものか知りたくないと思っていました。 –
を持っているリンクです。これは、複数行の文字列を定義する方法です。結果には、 '<< - TPL'と' TPL'の間のすべての**行**が含まれます。 'gsub(/^\ s + /、 '')'がこの文字列に適用されます。 – sschmeck
@Jordan: 'duplicate'と' that was my problem'タグの違いは何ですか? – InQusitive