2016-05-12 4 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 

I не рекомендую это, но это soluti на. Основная идея заключается в том, что глобальные макросы содержат строки, а + объединяет строки. Ключевой деталью является то, что кавычки не могут быть частью имени макроса. Это только потому, что подчеркивание может быть частью имени макроса, которое эта проблема укусит.