이 질문은 순전히 지적 호기심에서 비롯됩니다. Python 섹션을 비교적 자주 탐색 한 결과, this과 비슷한 질문을 여러 번 보았습니다. 여기서 누군가가 전역 변수를 정의하는 프로그래밍 방식을 묻습니다. 그들 중 일부는 exec
이라는 함정을 알고 있으며 다른 것들은 그렇지 않습니다.프로그래밍 방식으로 변수 이름을 만들 수있는 언어 유형은 무엇입니까?
그러나, 나는 최근에 다음이 일반적이다 STATA에서 봤는데 프로그래밍 :
STATA 용어로local N = 100
local i = 1
foreach x of varlist x1 - x`N' {
local `x' = `i' * `i'
++i
}
이름 N
와 로컬 매크로가 생성되고,``N 'evaluates to 100. In each iteration of the
foreach는 loop, a value from
x1 to
x100 is assigned to the local macro
x. Then, the line inside the loop, assigns the square of
i to the expansion of
x, a local macro with the same ending as
i . That is, after this loop
x4 expands to 4^2 and
x88`는 88^2로 확장됩니다. 파이썬에서
것 비슷한 할 수있는 방법 :
squares = {}
for x in range(1,101):
squares[x] = x**2
그런 다음 squares[7]
7^2에 해당합니다.
이것은 매우 간단한 예입니다. stata 매크로에는 다른 많은 용도가 있습니다. 실행의 결과로, regress
/corr
에 다음 r1
/r2
먼저, r
주변의 더블 표시 점은 두 배 매크로를 확장
local r1 "regress"
local r2 "corr"
foreach r of varlist r1-r2 {
``r'' y x
}
: 당신은 예를 들어, 평가하는 기능을 전달하는 방법으로 사용할 수 있습니다 독립 변수로 y
및 종속 변수로 x
을 갖는 선형 회귀를 수행 한 다음 y
과 x
사이의 상관 관계를 보여줍니다. 훨씬 더 복잡한 것들이 가능합니다.
제 질문은 기본적으로 stata가 변수 할당/평가가 "매크로 할당/확장"형식을 취하는 언어의 더 큰 범주로 분류됩니까? 왜 언어가 이와 같이 설계 될지에 대한 설명과 다른 언어로 된 유사한 구문에 대한 보너스 포인트.