SSブログ

Lua と awk の共通点 [Lua]

Lua で多重代入するときに左辺の方が右辺より数が多い場合は足りない分が nil で埋められる。

> print(x,y)
nil     nil
> x,y=5
> print(x,y)
5       nil

関数の引数の場合にもこれが当てはまるから、関数を定義されているより少ない数の引数で呼んでもエラーにはならずに―とはいっても部分適用というわけにはいかない―足りない分は nil 定義される。

> function f(x,y) print(x,y) end
> f(66,77)
66      77
> f(88)
88      nil

ところでこの仮引数のスコープは関数内に限られるのでそのままローカル変数として使える。

> x,y=22,33
> function g(x,y) y=x*2; return y end
> print(g(15))
30
> print(y)
33

だから関数定義の引数列に何か変数を付け加えるとその変数が局所変数として使えるということになる。
なるほど。余計な引数を付け加えることで局所変数を定義する…ん?

awkだ!

勿論 Lua にはローカル変数を定義する local というキーワードが用意されているので awk みたいにこんなことをする必要はまったくないです。

あと前に「配列は連想配列である」っていう発想を JavaScript と比べたけど awk もそうだった。それと数値型は浮動小数点数しかないっていうのも Lua, JavaScript, awk で共通だ。


nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

GNU GLOBALコルーチン ブログトップ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。