2016-05-12 15 views
0

私はこれを行うときただし、アンダースコアが最初のグローバル名の一部として解釈されますグローバル名を終了するにはどうすればいいですか?

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

のような他のグローバル変数の名前から新しいグローバル変数を構成しようとしています。これに対する私の現在のソリューションは、partAから地元を作成し、その後、私は、この一時的なローカルを作成することなくそれらを分離アンダ​​ースコア(またはその他の文字)を使用して新しいグローバルに最初の二つのグローバルを連結することができますどのように

global fullname `partA'_$partB 

を行うことですか?

+2

「グローバル変数」は、グローバルマクロの厳密なヒントです。 Stataという用語では、変数はデータセットの列であり、マクロは変数ではありません。当然、多くのプログラミング言語の観点から見ると、Stataマクロは変数のように見え、変数のように機能しますが、それは用語です。 http://www.stata.com/statalist/archive/2008-08/msg01258.htmlで同じように –

答えて

2

あなたがそうのように、$後、{}global名前を囲むことができます。

. global partA 1234 

. global partB 5678 

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

. di "$fullname" 
1234_5678 

I:これはあまりにも仕事と

. di "$fullincorrect" 
5678 

. di "$fullcorrect" 
1234_5678 
2

結果に

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

di "$fullincorrect" 


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

di "$fullcorrect" 

特にそれをお勧めしませんが、それはsolutiに。重要なアイデアは、グローバルマクロが文字列を保持し、+が文字列を連結することです。キーの詳細は、引用符をマクロ名の一部にすることはできません。これは、この問題が発生するマクロ名の一部にアンダースコアが含まれている可能性があるためです。

関連する問題