2016-05-12 55 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 fullincorrect $parta_$partb 

di "$fullincorrect" 


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

di "$fullcorrect" 

,結果

. di "$fullincorrect" 
5678 

. di "$fullcorrect" 
1234_5678 
2

這將工作太:

. global partA 1234 

. global partB 5678 

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

. di "$fullname" 
1234_5678 

我不要特別推薦它,但它是一個解決方案上。其核心思想是,全球宏持有字符串和+符連接字符串。關鍵的細節是引號不能是宏名稱的一部分。這只是因爲下劃線可以成爲這個問題的一個宏名稱的一部分。