von einem unbekannten Grund der Variable result
in der folgenden CodezeileWie intrigiere ich Tcl "Liste als String" als Liste?
set result [[$sqlCmd execute] allrows -as lists]
bekommt Zeichenfolge, die wie die Liste aussieht: {2 3 4 5}
Wenn ich puts "result $result => [llength $result]"
schreiben druckt {2 3 4 5} => 1
wenn ich puts [list $result]
schreiben, Es druckt {{2 3 4 5}}
, was korrekt ist, weil list
Liste aus einer Zeichenfolge erstellt.
Gibt es eine Möglichkeit, diese Zeichenfolge in das zu konvertieren, was sie erwartet - Liste - ohne irgendwelche String-Verarbeitungsschritte wie das Löschen von geschweiften Klammern und das Aufteilen von Strings zur Liste nach split
Funktion? Ich schlage vor, dass es eine Interpretation sein muss, aber ich finde keine schöne Lösung.
Kein TCL-Experte, aber es sieht so aus, als ob Ihr SQL-Befehl Ihnen eine Länge-1-Liste gibt, deren 1 Element eine andere Liste ist. Wenn der Befehl zwei Zeilen ausgewählt hätte, hätten Sie eine Liste mit der Länge 2 erhalten, deren Elemente einzelne Listen für einzelne Zeilen wären. – user2357112
@ user2357112 Ich bin mir nicht sicher, ob ich verstehe, was du meinst. Es sieht gut aus Vorschlag, dass die Liste der Länge-1 nicht Liste wird. Aber wie konnte das passieren? Und in der SQL Server-Konsole ausgeführt, gibt die Anfrage genau eine Datenzeile zurück, was erwartet wird. Also, warum eigentlich sollte es eine Liste von unterschiedlicher Länge zurückgeben. Bitte erläutern, was meinst du? – OlegG
"liste der länge-1 wird nicht liste" - was? Nein, es ist immer noch eine Liste. Warum denkst du ist es nicht? – user2357112