どらこにあ戦記
日記です。
スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
【--/--/-- --:--】 | スポンサー広告 |
クロージャについて考えてみた。
クロージャといえば、
数年前からJavaに導入するとかで話題になっているらしいアレです。

関数型言語まわりのトピックとは知らず、
Perlの情報を漁っていたら見つけた。

いまだに使いどころが把握できていないが、
とりあえず現状で「あー、なるほどね」と思ったことを書いておこう。

- ジェネレータ
呼び出すたびに新しい値を生成する関数をジェネレータと言う。
C言語のrand関数が好例。

C言語のrand関数は合同線形法という式で乱数を生成する。
直前の呼び出しで生成した値を元に、次に呼び出された時に生成する値を計算する方法。

「え?C言語じゃ 直前の呼び出しで生成した値は
関数を抜ける時に スタック領域ごと消えるでしょ?」ってあなた、正解。
で、C言語のrand関数では、直前の呼び出しで生成した値をstatic変数に保持する。
# うん、スレッドセーフじゃない臭いがプンプンするね。

クロージャはオブジェクトに近いコンセプトを持っており、、
エンクロージャのレキシカル変数に値を保持できるので
randと同じようなことをクロージャで実現する場合でも、大域を汚染せずに済むのだった。
スポンサーサイト
【2008/03/29 00:13】 | プログラミング | トラックバック(0) | コメント(0) |
<<春ポタ | ホーム | リフレッシュ!>>
コメント
コメントの投稿












管理者にだけ表示を許可する

トラックバック
トラックバックURL
http://dragonia.blog51.fc2.com/tb.php/8-b068b644
この記事にトラックバックする(FC2ブログユーザー)
プロフィール

Kohei

Author:Kohei
さめない夢は ないじゃない。

カレンダー

06 | 2017/07 | 08
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 - - - - -

最近の記事

最近のコメント

最近のトラックバック

RSSフィード

メールフォーム

名前:
メール:
件名:
本文:

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。