2016-12-20 11 views
-4

Ich arbeite an Rails. In meinem Code-Basis, sehe ich eine Linie, die Arel::SqlLiteral wie folgt aus:Ruby: << - Operator

result = Arel::Nodes::SqlLiteral.new(<<-SQL 
    CASE WHEN condition1 THEN calculation1 
    WHEN condition2 THEN calculation2 
    WHEN condition3 THEN calculation3 
    ELSE default_calculation END 
SQL) 

Ich verstehe, was dieser Code Stück tun. Das, was ich nicht verstehe, ist seine Grammatik, an dieser Stelle:

Arel::Nodes::SqlLiteral.new(<<-SQL 
    ... 
    SQL 
) 

So in Ruby, was ist die Grammatik des <<- folgt mit Namen, und dann endlich Block nennen wir diesen Namen.

dank

+0

Ich verstehe wirklich nicht, warum nach der Kennzeichnung duplizieren, bekomme ich immer noch Down-Abstimmung: D völlig Unsinn: DI denken, dass diese Leute stimmen mich nicht glücklich leben ^^ –

+0

Darüber hinaus, ob sie google '<< - 'operator bedeutet: DI habe es ohne Ergebnis versucht. Hoffentlich sollten sie sich vor einigen Aktionen zweimal überlegen: D respektiere die Leute um sie herum ^^ ein wenig nach unten stimmen lassen nichts anderes außer ihnen. Sie werden mehr und mehr Hass werden. –

Antwort

1

Das Schlüsselwort Sie suchen ist "Heredoc".

https://ruby-doc.org/core-2.2.0/doc/syntax/literals_rdoc.html#label-Here+Documents

Es ist vor allem für Schalen/Scripte prettify große Texte und gängige Praxis verwendet. Der Marker oben zeigt den Beginn eines Heredocs an und der Marker am unteren Rand (der nicht eingerückt sein darf, wenn Sie vor dem Eröffnungsmarker kein "-" setzen) gibt das Ende an.

+0

danke. Ich weiß wirklich nicht warum jemand deine Antwort abstimmt: D es hilft mir. Und zumindest nicht etwas falsch machen ^^ arm sie. –