Meine Lieblings "versteckte oder praktische Funktion" ist, wie zitiert in Tcl arbeitet. Ich verwende gerne den Ausdruck "Zitat ist ein Werkzeug, keine Regel". Ich mag auch „nur Sie geschweiften Klammern benötigen, wenn Sie geschweifte Klammern müssen“ sagen
Während die meisten Sprachen haben Regeln für die Blocktrennzeichen müssen (zum Beispiel für bestimmte Dinge verwendet werden, in C müssen Sie verwenden {} zu bezeichnen einen Block), Tcl ist nicht so streng.
Mit Tcl können Sie auswählen, welche Zitierzeichen Ihnen den gewünschten Effekt geben. Es gibt sicherlich Best Practices, aber am Ende müssen Sie den Anführungszeichen auswählen, mit dem Sie die Aufgabe am besten erledigen können.
Das bedeutet zum Beispiel, können Sie ein Verfahren in vielerlei Hinsicht definieren, einschließlich:
proc foo {args} {
.... body here ....
}
proc foo "args" "
.... body here ....
"
proc foo args [some code that returns the body]
... und so weiter. Gleiches gilt für bedingte Anweisungen, Schleifen und alles andere. (Für Nichteingeweihte sind geschweifte Klammern in etwa gleichbedeutend mit dem einfachen Anführungszeichen der Shell, doppelte Anführungszeichen sind wie das doppelte Anführungszeichen der Shell und eckige Klammern sind wie der Shell-Backtick.).
Jetzt schauen sich viele Leute das an und sagen WTF? aber es gibt dem Programmierer wirklich viel Kraft. Wir bekommen oft Fragen in comp.lang.tcl nach dem Motto "Wenn ich 'this {und $ that}' mache, wie bekomme ich $, das erweitert werden soll?". Die Antwort folgt dem alten Witz "Patient: Doktor, es tut weh, wenn ich diesen Arzt mache: Tu das nicht". Das heißt, wenn Sie das Verhalten, das Sie mit einem Satz Trennzeichen erhalten, nicht mögen, wählen Sie ein anderes Trennzeichen. Nur weil eine if-Anweisung normalerweise mit geschweiften Klammern konstruiert wird, heißt das nicht, dass sie mit geschweiften Klammern erstellen muss.
Das ist meine Lieblings "versteckte" Funktion von Tcl. Es ist nicht versteckt - es ist direkt auf der wunderbar vollständigen, aber prägnanten Tcl (n) man-Seite, aber die Auswirkungen sind nicht klar, bis Sie vollständig wissen, wie Tcl funktioniert.
Community Wiki bitte. –
Ich zweite diese Anfrage. – Geo
Sorry jeder .. Ich muss eine der Antworten für Stack over Fow akzeptieren. Hier ist alles eine gute Antwort nur .. Ich akzeptiere nur die Antwort wie auf der Grundlage von Abstimmungen – joe