2016-11-20 1 views
1

Die folgende Anweisung in TCL Manpage verwirrt mich über TCL-Array:Wie kann der Array-Name eine leere Zeichenfolge sein?

$ name (Index) Name gibt den Namen eines Array-Variablen und Index gibt den Namen eines Elements in diesem Array. Der Name darf nur Buchstaben, Ziffern, Unterstriche und Namensraumtrennzeichen, und eine leere Zeichenfolge enthalten.

Ich frage mich, wie der Array-Name eine leere Zeichenfolge sein?

Hier sind meine Experimente:

% set a "" 
% set ${a}(1) 100 
can't set "(1)": variable isn't array 
% set (1) 100 
can't set "(1)": variable isn't array 
% set $a(1) 100 
can't read "a(1)": variable isn't array 
% set {}(1) 100 
extra characters after close-brace 

Können Sie mir den Weg zeigen, wie ein Array zu erstellen, dessen Name leeren String?

+1

Der leere Name ist legal, aber wenn wir konnten wir die Zeit zurückspulen würde und es nicht so sein lassen. Es ist nur so, dass wir, als wir an diesen Fall gedacht haben, in freier Wildbahn verwendet wurden. Also haben wir es stattdessen dokumentiert ... –

Antwort

1

Sieht so aus, als hätten Sie die Variable mit leerem Namen bereits auf einen Wert gesetzt. Sie haben Fehler, weil die Variable existiert und es kein Array ist. Verwendung:

unset -nocomplain "" 
set (foo) bar 

oder

unset -nocomplain "" 
array set "" [list foo bar] 
+0

und dann, aus Gründen der Vollständigkeit, 'puts $ (foo)' –

Verwandte Themen