AWKのスコープ
code:awk
function bar()
{
for (i = 0; i < 3; i++) # i is redeclared as 0
print "bar's i=" i # up to 2
}
function foo(j)
{
i = j + 1 # 0 + 1 = 1
print "foo's i=" i # 1
bar() # i was overridden
print "foo's i=" i # 1 # thus 3
}
BEGIN {
i = 10
print "top's i=" i
foo(0)
print "top's i=" i # thus 3
}
code:txt
top's i=10
foo's i=1
bar's i=0
bar's i=1
bar's i=2
foo's i=3
top's i=3
関数内の変数をローカル化するために、関数の引数定義の際に、利用する変数をあらかじめ列挙しておくテクニックがある
すごすぎる