2016-11-23 15 views
0
template = <<-TPL.gsub(/^\s+/,'') 
    ╭───────╮ 
    | X X X | 
    | X X X | 
    | X YYX | 
    | X X X | 
    ╰───────╯ 
    TPL 

これはgem rubycardsのスニペットです。<<はルビの意味ですか?

テンプレートに文字列を格納していることを理解しています。しかし、<<-は何をしますか?

+1

を持っているリンクです。これは、複数行の文字列を定義する方法です。結果には、 '<< - TPL'と' TPL'の間のすべての**行**が含まれます。 'gsub(/^\ s + /、 '')'がこの文字列に適用されます。 – sschmeck

+0

@Jordan: 'duplicate'と' that was my problem'タグの違いは何ですか? – InQusitive

答えて

2

それは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 

注意を左。 の内容をインデントすると、それらのスペースが出力に表示されます。

1

残念ながら、Rubyの<<オペレータには多くの用途があります。しかし、具体的なケースでは、<<は、複数の行にまたがる文字列を宣言するために使用されます。これは、あなたが標準出力を見て行列を得ることができます。

What does << mean in Ruby?は、この機能はここにドキュメントと呼ばれている他の多く

+0

質問は '<< - 'ではなく、 '<<'ではありません。 –

+0

申し訳ありませんが、TPLはインデントされていないので、私は彼が何のためのものか知りたくないと思っていました。 –

関連する問題