この質問は純粋に知的好奇心から出てきます。 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に拡張されます。
Pythonで似た何かをする方法は、次のようになります。そして、
squares = {}
for x in range(1,101):
squares[x] = x**2
squares[7]
は^ 2 7に等しいです。
これは非常に簡単な例です。 stataマクロには他にも多くの用途があります。あなたは、例えば、評価されるべき機能を渡す方法としてそれらを使用することができます。
local r1 "regress"
local r2 "corr"
foreach r of varlist r1-r2 {
``r'' y x
}
r
を二重目盛りは、実行中の結果と、regress
/corr
に最初r1
/r2
に、その倍のマクロを展開します独立変数としてy
を従属変数とし、とx
との間の相関を示す線形回帰。もっと複雑なものも可能です。
私の質問は基本的には、変数割り当て/評価がこのような "マクロ割り当て/拡張"を行う言語のいくつかのより大きなカテゴリに分類されますか?なぜこのように言語が設計されるのか、そして/または他の言語で類似した構造の例についての説明のためのボーナスポイント。