Tcl-Arrays sind Sammlungen von Variablen (z. B. die einzelnen Elemente können verfolgt werden) und als solche keine Werte erster Klasse und können nicht direkt übergeben werden. Stattdessen werden sie entweder mit dem Namen übergeben oder es wird eine serialisierte Version des Arrays übergeben.
Mit Pass von Namen, gibt der Anrufer den Namen einer Variablen und die aufgerufene Prozedur verwendet upvar
diesen Namen in eine lokale Variable zu binden, dass es aktualisiert werden kann; Die Updates sind außerhalb der Prozedur sichtbar.
Wenn Sie jedoch mit Java integrieren, ist es besser, einen serialisierten Wert Ansatz zu verwenden. Die Prozedur verwendet array get
, um ein Array in einen Wörterbuch Wert zu konvertieren, der zurückgegeben werden kann. Wörterbücher sind der Java-Klasse HashMap
sehr ähnlich.
proc foo {} {
# Do stuff here to make the array...
return [array get theArray]
}
Sie können auch den dict
Befehl verwenden, um mit Wörterbücher zu erstellen und arbeiten direkt. Auf der Java-Seite sollte auf Wörterbücher über die Klasse TclDict
zugegriffen werden. (Ich nehme an, Sie verwenden JTcl; wenn nicht, machen Sie das Leben ein bisschen peinlich für sich selbst ...)