| FUNCTION |
| Zweck: | Erstellen, Ändern oder Anzeigen von benutzerdefinierten Variablenfunktionen |
| Format: | Anzeigemodus: |
FUNCTION [/GL /LL /P] [wildname]
Direkter Definitionsmodus:
FUNCTION [/= /GL /LL] name[=]definition
Definitionsdateimodus:
FUNCTION [/= /G /GL /L /LL /O /Z] /R [file...]
| file | Eine oder mehrere Eingabedateien, aus denen Funktionsdefinitionen gelesen werden. |
| wildname | Name der Funktion, deren Definition angezeigt werden soll (kann * und ? wildcardsenthalten ) |
| name | Der Name der Funktion, die Sie definieren möchten. |
| definition | Der Wert oder die Definition dessen, was die Funktion zurückgeben soll. |
Siehe auch: UNFUNCTION und ESET.
Syntax der Dateivervollständigung:
Die Standard-Syntax für die Vervollständigung von Dateinamen ist: [/r] * [1] Funktionen [2*] *
Verwendung:
Speichern und Zurückladen Ihrer Funktionen
MitFUNCTION können Siebenutzerdefinierte variable Funktionen erstellen oder anzeigen, die überall dort verwendet werden können, wo auch Variablenfunktionen verwendet werden können. Benutzerdefinierte Funktionen sind leistungsfähige Alternativen zu Unterprogrammen.
Wenn Sie den Befehl FUNCTION ohne Parameter aufrufen, wird die aktuelle Funktionsliste angezeigt (die lokale Funktionsliste, wenn Sie lokale Funktionen in TCMD.INI oder in der Startbefehlszeile von TCC festgelegt haben ; andernfalls die globale Funktionsliste):
function
Wenn Sie einen Platzhalter(* oder ?) ohne Gleichheitszeichen und ohne Definition angeben, zeigt FUNCTION die aktuellen Werte aller Funktionen an, die den Platzhalter enthalten, z.B:
function *dx*
zeigt alle Funktionen an, die dx in ihrem Namen enthalten.
Sie können die Option/Pverwenden , um das Blättern in der Anzeige zu steuern, wenn Sie Funktionen anzeigen.
Wenn Sie das Gleichheitszeichen und die Definitioneinschließen , erstellt oder aktualisiert FUNCTION die Funktion, auf die sich der Name bezieht. Alle früheren Definitionen, die mit dem Namen verbunden sind , werden verworfen. Anstelle des =-Zeichens können Sie ein oder mehrere Leer- oder Tabulatorzeichen verwenden, um den Namen und die Definition zu trennen .
Sobald eine Funktion definiert ist, kann die Definition mit ESET /Fbearbeitet werden .
Eine Funktion kann optional Verweise auf Parameter verwenden, die von %0 bis %511nummeriert sind und beim Aufruf der Funktion durch den entsprechenden Parameterwert ersetzt werden. %0 bezieht sich auf den Funktionsnamen, %1 auf den ersten Parameter, usw. Zum Beispiel gibt die Funktion
function leftmost=`%@left[1,%1]`
das am weitesten links stehende Zeichen in ihrem Parameter zurück, z. B.%@leftmost[xyz] gibtx zurück .
Der Parameter %n$ hat eine besondere Bedeutung. TCC wird so interpretiert, dass er "alle Argumente von Parameter n bis zum Ende " bedeutet . Wenn n nicht angegeben wird, hat er den Standardwert 1, so dass %$ "alle an die Funktion übergebenen Argumente "bedeutet.
Der Parameter %-n$ bedeutet "die Argumente von Parameter 1 bis n - 1".
Die spezielle Variablenreferenz %# expandiert zu der Anzahl deran die Funktion übergebenen Parameter.
Eine Funktionsdefinition muss überhaupt keine Parameter referenzieren. Ein Beispiel:
function tomorrow=`%@makedate[%@inc[%@date[%_date]]]`
könnte einfach als %@tomorrow[]aufgerufen werden.
Um den Funktionsnamenzu verwenden , rufen Sie die Funktion als %@name[Parameter] auf , wobei Sie genügend Parameter angeben müssen, um dem Parameter mit der höchsten Nummer , auf den in der Funktionsdefinition verwiesen wird, einen Wert zuzuweisen. Die Funktion kann mehr Parameter haben, die dann ignoriert werden.
Das Thema Farben, Farbnamen und Codes zeigt ein einfaches Beispiel für die Verwendung einer Funktion in einer Batchdatei.
Dienormale Methode ist die Verwendung des Befehls UNFUNCTION. Es ist jedoch auch möglich, eine Funktion zu löschen, indem man sie ohne Definition umdefiniert , z.B. mit dem Befehl
function fs=
löscht die Funktion fs.
Funktionen können in lokalen und/oder globalen Listen gespeichert werden.
Bei einer lokalen Funktionsliste wirken sich alle Änderungen an den Funktionen nur auf die aktuelle Kopie von TCC. Sie sind in anderen Shells oder anderen Sitzungen nicht sichtbar.
Bei einer globalen Funktionsliste haben alle Kopien von TCC dieselbe Funktionsliste, und alle Änderungen an den Funktionen in einer Kopie wirken sich auf alle anderen Kopien aus. Dies ist die Voreinstellung in TCC.
Sie können den Typ der zu verwendenden Funktionsliste mit den Optionen /GL und /LL in den Konfigurationsoptionen FUNCTION, Lokale Funktionen und Globale Funktionen, mit den Optionen /L und /LF des START-Befehls und mit den Startoptionen /L und /LF festlegen .
Wenn Sie /GL oder /LL nicht angeben, TCC sucht zunächst nach Funktionen in der lokalen Liste. Wenn es keine lokale Liste gibt oder die Funktion nicht gefunden wird, TCC wird die globale Liste durchsucht (falls vorhanden).
Es gibt keine feste Regel für die Entscheidung, ob eine lokale oder eine globale Funktionsliste verwendet werden soll. Je nach Ihrer Arbeitsweise kann es für Sie am praktischsten sein, einen Typ oder eine Mischung von Typen in verschiedenen Sitzungen oder Shells zu verwenden. Wir empfehlen Ihnen, mit der Standardmethode zu beginnen und sie dann zu ändern, wenn Sie feststellen, dass die Standardmethode nicht geeignet ist.
Immer wenn Sie eine zweite Kopie von TCC starten, die eine lokale Funktionsliste verwendet, erbt sie eine Kopie der Funktionen aus der vorherigen Shell. Alle Änderungen an den Funktionen, die in der zweiten Shell vorgenommen werden, wirken sich jedoch nur auf diese Shell aus. Wenn Sie möchten, dass die in der zweiten Shell vorgenommenen Änderungen auch die vorherige Shell betreffen, verwenden Sie in beiden Shells eine globale Funktionsliste.
Speichern und erneutes Laden Ihrer Funktionen
Auf diese Weisekönnen Sie Ihre Funktionen in einer Datei ( z. B.FUNCTIONS.LST) speichern :
function > function.lst
Sie können dann alle Funktionsdefinitionen in der Datei neu laden, wenn Sie das nächste Mal mit dem Befehl starten:
function /r function.lst
Das ist viel schneller, als jede Funktion einzeln in einer Batch-Datei zu definieren. Wenn Sie Ihre Funktionsdefinitionen in einer separaten Datei aufbewahren, die Sie beim TCC starten, können Sie sie mit einem Texteditor bearbeiten, die bearbeitete Datei mit FUNCTION /R neu laden und wissen, daß beim nächsten Start von FUNCTION /R dieselbe Funktionsliste geladen wird. TCC.
Wenn Sie Funktionen in einer Datei definieren, die mit dem Befehl FUNCTION /R verarbeitet wird, brauchen Sie die Definition nicht in Anführungszeichen zu setzen, auch wenn dies normalerweise erforderlich wäre, wenn Sie dieselbe Funktion in der Befehlszeile oder in einer Batch-Datei definieren.
Wenn Sie eine Funktion in der Befehlszeile definieren (d. h. ohne Verwendung der Option /R ), werden Variablen und Funktionen, die nicht durch Hochkommata oder doppelte %-Zeichen geschützt sind, sofort ausgewertet, und das Ergebnis wird Teil der Funktionsdefinition.
Syntaxfehler in einer Funktionsdefinition werden erst erkannt, wenn sie verwendet wird.
Optionen:
| /P | Nach jeder Bildschirmseite auf das Drücken einer Taste warten, bevor die Anzeige fortgesetzt wird. |
name=definition
wobei name der Name der Funktion ist und definition angibt, wie der Wert zu ermitteln ist. Sie können das Gleichheitszeichen = oder Leerzeichen verwenden , um Name und Definition zu trennen . Hintere Anführungszeichen sind nicht erforderlich.
Sie können der Datei Kommentare hinzufügen, indem Sie jede Kommentarzeile mit einem Doppelpunkt :beginnen .
Sie können mehrere Dateien mit einem FUNCTION /R-Befehl laden, indem Sie die Namen durch Leerzeichen getrennt in die Befehlszeile stellen:
function /r func1.lst func2.lst
FUNCTION /R-Definitionen können sich über mehrere Zeilen in der Datei erstrecken, wenn jede Zeile, außer der letzten, mit einem Escape-Zeichen abgeschlossen wird .
Wenn kein Dateinamensparameter vorhanden ist und die Eingabe umgeleitet wird, liest FUNCTION /R von stdin.