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 で共通だ。
2006-08-22 22:47
nice!(0)
コメント(0)
トラックバック(0)
コメント 0