Definition und Schleifen durch arrays tcl
Ich brauche etwas Hilfe bei der Definition von arrays und anzeigen und looping thrrough Sie in TCL.
Hier ist, wie ich tun würde, Sie in php.
$date =array();
$size=0;
$date[$size] =$pre_event_date;
/* After doing some manpulation and calculations with $size */
for($i=0;$i<=$size;$i++){
echo $date[$i];
}
Ich würde gerne das gleiche tun mit tcl.Ist der folgende code geeignet?
set size 0
set date[$size] $pre_event_date
#After performing some manipulation
for {set i 0} { $i <=$size } {incr i} {
puts "$date[$i]";
}
Kann auch ich definieren set $Datum ein array. Einige wie:
set date array();
Also bearbeitete ich meinen code versucht, einen einfachen test mit RSeeger die array-Implementierung:
set date(0) 35
set date(1) 40
foreach key [array names date]{
puts "${key}=$date($key)"
}
oben nicht alles zurückzugeben, was es gibt wahrscheinlich einige Fehler.
Ich habe auch versucht:
legt $Datum($key) ohne Anführungszeichen, aber das funktioniert nicht.
Sie profitieren von den Tcl-tutorial
Das problem mit deinem letzten code-snippet ist, dass es keine Leerzeichen zwischen den
Das problem mit deinem letzten code-snippet ist, dass es keine Leerzeichen zwischen den
[array names date]
und die {
. Dieser Raum ist wesentlicher in der Tcl! Es trennt die Sache der Iteration (die serialisierten array-Inhalt) aus dem Skript auszuführen für jede iteration. Im Allgemeinen, mit Tcl Sie muss trennen Sie die Wörter korrekt; es wird schnell die zweite Natur (und ich Neige dazu, die identisch zu tun, was jetzt in vielen anderen Sprachen auch, wie zusätzliche Leerzeichen steigert die Lesbarkeit fast überall, vorausgesetzt, es ist semantisch legal).
InformationsquelleAutor Micheal | 2012-04-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie schauen, um index-Dinge, die durch die Anzahl (der der code bedeutet), verwenden Sie eine
list
. Es ist Analog zu einem array in C.Wenn Sie indizieren möchten, die Dinge durch eine Zeichenkette (oder haben eine spärliche Liste), können Sie eine
array
, die eine hashmap der Schlüssel->Wert.never mind.. es funktioniert..danke nochmal!
Ich denke immer noch, Sie wären besser dran mit Listen und keine arrays.
beachten Sie auch, dass Tcl-arrays könnte das Gefühl unbequem, um Programmierer, die aus anderen langugages, dass Sie sich sind nicht die Werte, so können Sie nicht das übergeben von arrays in Prozeduren und gibt Sie zurück; Sie können nur übergeben, um Namen von arrays. Seit der Version 8.5 Tcl hat
dict
ionaries die erste-Klasse-Werte. Also, wenn Sie brauchen eine hashmap und können Tcl-8.5+, Blick auf diedict
Befehl.InformationsquelleAutor RHSeeger
In Tcl-array-Konzept unterscheidet sich von vielen anderen Programmiersprachen und was Tcl ruft ein array wird oft als hash-Tabelle oder ein assoziatives array an anderer Stelle. Array-Indizes sind nicht beschränkt auf die ganzen zahlen, sondern kann jede juristische strings. Die meiste Zeit finde ich mich mit Listen (oder Listen von Listen) anstelle von arrays für Daten-manipulation. Für die Schleife durch eine Liste oder ein array, das Sie verwenden können, Befehl foreach.
Sie nicht haben, um das array initialisiert werden, bevor Sie es die Werte, starten Sie das hinzufügen der Mitglieder. Die einzelnen array-Mitglieder verwiesen
Gibt es keine mehrdimensionalen arrays in Tcl, Sie können aber simuliert werden, indem er konsequent die Namen von Tasten, zum Beispiel
Andere als die, würde ich nur zeigen Sie meist ausgezeichnete Tcl-wiki und es ist array Seite und array Mann Seite für die syntax, wie ich sehe nicht der Punkt zu wiederholen die meisten Ihrer Inhalte hier.
lindex
undlset
multi-index-Formulare, die speziell für diesen Fall. Für Fälle, in denen Sie benötigen, die Art der Sache, es funktioniert auch (und Ihr auch schnell).InformationsquelleAutor Edu
TCL-arrays sind näher an, was Python ruft ein dict, und ein hash in Perl.
So hilft es, zu denken, der den index als eine Schnur, statt einer Ganzzahl index:
Können Sie die array - Funktion, um sinnvolle Dinge zu tun, wie eine Liste erstellen
alle Schlüssel, und Sie können Durchlaufen dieser Liste, wenn Sie benötigen.
Zum Beispiel könnten Sie eine Liste erstellen von Tasten und verwenden Sie dann llength, um die array-Größe.
Dies funktioniert am besten, wenn Sie einen eindeutigen index, um Sie zu finden.
Wenn Sie nur eine geordnete Liste - als könnten Sie besser dran mit der Liste funktioniert wie lappend.
Als Edu erwähnt - foreach ist wirklich nett für die Arbeit mit Listen, dort ist eine gute chance es könnte Ihr Leben leichter machen, wenn Listen eignen sich für die Lösung Ihres Problems.
auch in diesem Fall brauche ich arrays ähnlich wie der code oben erwähnt..ich sehe nicht ein, listet passend für mich in meiner derzeitigen situation..
Abhängig von dem Inhalt von $pre_event_date - vielleicht könnten Sie die "split" - Befehl. Auffüllen der eigentlichen Liste oder ein array scheint so zu sein, dass wird bestimmen, was für Sie am besten funktioniert - aber da man sich mit nur einem Zähler als index, würde ich sicherstellen, dass Sie check out llindex vor der Entscheidung.
InformationsquelleAutor Niall Byrne