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

Dies ist ein Schnipsel von gem rubycards.Was bedeutet << - in Rubin bedeuten?

Ich verstehe, dass es einige Zeichenfolge in Vorlage speichert. Aber was macht <<-?

+1

Diese Funktion hat doc genannt wird. Es ist eine Möglichkeit, mehrzeilige Strings zu definieren. Das Ergebnis enthält alle ** Zeilen ** zwischen '<< - TPL' und' TPL'. 'gsub (/^\ s + /, '')' wird auf diese Zeichenkette angewendet. – sschmeck

+0

@ Jordan: Was ist der Unterschied zwischen 'duplicate' und' that loaded my problem' Tags? – InQusitive

Antwort

2

Es wird heredoc genannt:

Wenn Sie einen großen Textblock zu schreiben können Sie verwenden, um ein „hier Dokument“ oder „heredoc“:

expected_result = <<HEREDOC 

This would contain specially formatted text. 

That might span many lines 
HEREDOC 

Die heredoc auf die beginnen Linie folgende < < HEREDOC und endet mit der nächste Zeile, die mit HEREDOC beginnt. Das Ergebnis enthält die Endung newline.

Sie können einen beliebigen Bezeichner mit einem heredoc verwenden, aber typischerweise werden Bezeichner nur in Großbuchstaben verwendet.

Sie können die Endekennung einrücken, wenn Sie einen Platz „-“ nach < <:

expected_result = <<-INDENTED_HEREDOC 
This would contain specially formatted text. 

That might span many lines 
    INDENTED_HEREDOC 

Beachten Sie, dass die während der Schließ Kennung eingerückt werden kann, der Inhalt immer so behandelt, wenn sie bündig links. Wenn Sie den Inhalt einrücken, erscheinen diese Leerzeichen in der Ausgabe.

1

Leider gibt es viele Anwendungen für den Operator << in Ruby. In Ihrem speziellen Fall wird << jedoch zum Deklarieren einer Zeichenfolge verwendet, die sich über mehrere Zeilen erstreckt. Dies ermöglicht es Ihnen, die Standardausgabe der Matrix zu erhalten.

What does << mean in Ruby? ist ein Link, der hier viele andere

+0

Frage ist über '<< -', nicht '<<' :) –

+0

Sorry, TPL wurde nicht eingerückt, also nahm ich an, er wollte nicht einmal wissen, wofür - war. –