2016-05-12 11 views
0

Ich versuche, eine neue globale Variable von anderen globalen Variablennamen wieWie beende ich einen globalen Namen?

global partA 1234 
global partB 5678 
global fullname $partA_$partB 

jedoch zu komponieren, wenn ich dies tue Strich wird als Teil des ersten globalen Namen interpretiert. Meine aktuelle Lösung ist ein lokaler aus partA zu erstellen und dann tun

global fullname `partA'_$partB 

Wie kann ich die ersten beiden Globals in eine neue globale mit einem Unterstrich (oder andere Zeichen) Trennen sie verketten, ohne diese temporäre lokale zu erstellen?

+2

"Globale Variable" ist hier streng genommen ein Solecism für Global Macro. In Stata-Begriffen ist eine Variable eine Spalte eines Datasets und Makros sind keine Variablen. Aus der Sicht vieler Programmiersprachen sieht ein Stata-Makro natürlich wie eine Variable aus und funktioniert wie eine Variable, aber das ist die Terminologie. Mehr in der gleichen Richtung bei http://www.stata.com/statalist/archive/2008-08/msg01258.html –

Antwort

2

können Sie umschließen die global Namen in {} nach den $, etwa so:

global parta 1234 
global partb 5678 
global fullincorrect $parta_$partb 

di "$fullincorrect" 


global partc 1234 
global partd 5678 
global fullcorrect ${partc}_${partd} 

di "$fullcorrect" 

mit dem Ergebnis

. di "$fullincorrect" 
5678 

. di "$fullcorrect" 
1234_5678 
2

Auch dies funktionieren würde:

. global partA 1234 

. global partB 5678 

. global fullname = "$partA" + "_" + "$partB" 

. di "$fullname" 
1234_5678 

I empfehle es nicht besonders, aber es ist eine Lösung auf. Die Schlüsselidee ist, dass die globalen Makros Zeichenfolgen enthalten und + Zeichenfolgen verketten. Ein wichtiges Detail ist, dass die Anführungszeichen nicht Teil eines Makronamens sein können. Nur weil ein Unterstrich Teil eines Makronamens sein kann, bei dem dieses Problem eingreift.

Verwandte Themen