Ordentlich Werte in mehreren Zeilen auflisten

8

Wie listet man Werte in mehreren Zeilen ohne Backslash am Ende jeder Zeile auf?

Man kann keine Liste in mehreren Zeilen erstellen, ohne am Ende einen Backslash zu haben.
Zum Beispiel der folgende ( falsche ) Code:

%Vor%

gibt einen Fehler:

%Vor%

Es kann behoben werden, indem ein Backslash am Ende der Zeile angehängt wird:

%Vor%

Was hässlich und fehleranfällig ist.

Bitte beachten Sie:

  • Ich bin mir der Verwendung der geschweiften Klammern ( { & amp; } ) bewusst, aber es erlaubt keine Ausführung von Befehlen und hält auch überflüssige Leerzeichen.
  • Jeder andere Befehl kann verwendet werden (z. B. dict create ), nicht nur list wie in meinem Beispiel.

Verwenden von Tcl 8.5

    
Dor 25.03.2014, 08:37
quelle

3 Antworten

10

Tcl verwendet Newline (und Semikolon) als Befehlstrennzeichen. Dies ist ein Kernteil der grundlegenden Syntax; Sie können nicht umgehen, so dass Sie müssen entweder Anführungszeichen oder geschweifte Klammern verwenden, um Backslash-itis zu vermeiden. Sehen wir uns die Möglichkeiten an (denken Sie daran, dass Listenseparatoren jede nicht leere Whitespace-Sequenz sein können).

Hässlich, fehleranfällig list mit Backslashes

%Vor%

Mit Klammern, keine Substitutionen

%Vor%

(Beachten Sie, dass in% $elephant nur eine Folge von Zeichen ist, nicht eine gelesene Variable.)

Mit doppelten Anführungszeichen, aber Vorsicht!

%Vor%

Mit "sei vorsichtig!" Ich meine, dass, wo Sie ein Mehrwort-Mitglied der Liste haben, Sie eine innere [list …] oder andere Zitate benötigen:

%Vor%

Aber das wäre wahr mit den list + Backslashes an der Spitze.

Verwendung von subst ...

%Vor%

Ich könnte das "aufräumen" (und andere mögliche Probleme vermeiden) mit:

%Vor%

Aber ehrlich gesagt, wenn die Dinge wirklich komplex werden, tue ich das tatsächlich:

Konstruiere mit mehreren Befehlen

%Vor%

Es hat keinen Sinn, sich über den Kopf zu schlagen, um einen Befehl zu verwenden, wenn zwei oder mehr alles mit weniger Problemen erledigen.

    
Donal Fellows 25.03.2014, 09:02
quelle
1

Hier ist ein Proc namens lines , der vielleicht das macht, wonach du suchst -

%Vor%

Hier ist eine Demonstration seiner Verwendung -

%Vor%

Es wird wie gewünscht ausgegeben

%Vor%

Ein Ideone ist hier , wenn Sie mit einer Gabel spielen möchten.

    
Andrew Cheong 25.03.2014 08:41
quelle
1

Manchmal kann es einfach "ordentlich" sein, mehrere Zeilen zu machen, um die Zeilen zu teilen.

%Vor%     
Melchior 20.01.2015 15:51
quelle

Tags und Links