タグ

closureに関するwebmarksjpのブックマーク (9)

  • ハタさんのブログ(復刻版) : javascriptを初めて学ぶ人についてのおさらい。その1

    僕にも教える人ができた(? というか人にモノを教える立場)になったので、とりあえず、最近はもっぱらjavascriptを教えています。 もともとCやJavaなどについてはある程度の知識がある人なので、それを少しjs的な意味で、関数言語的な教えをやっている最中のメモ 変数って何ですか?変数って値もしくは式そのものに利便的な名前をつけているものです 次のhogeとfooは値をいれる箱ではなく、値そのものに別名(もしくは分かりやすい名称)を割り当てているだけに過ぎませんよ。 var hoge = 1; var foo = [1, 2, 3]; alert(hoge + 1); // 2 alert(foo[0]); // 1 alert(1 + 1); // 2 alert([1, 2, 3][0]); // 1 つまり、関数自体を変数に代入する事ができます。(functionとは特別な呼び名

  • Martin Fowler's Bliki in Japanese - クロージャ

    http://martinfowler.com/bliki/Closure.html 動的言語に興味がでてくると、 クロージャやブロックと呼ばれる概念に出会うと思います。 C/C++/Java/C# などクロージャを持たない言語をご使用の方は、 どういったものなのかご存知ないかもしれません。 ここでは簡単にクロージャについて説明します。 クロージャを持った素晴らしい言語を使ったことある方にとっては、 あまり面白くない話かもしれません。 クロージャは長年使用されてきました。 私が最初に出会ったのは、おそらく Smalltalk だったと思います。 Smalltalk ではブロックと呼んでいました。 Lisp ではクロージャを多用しています。 Ruby でもクロージャが提供されています――多くの rubyist がスクリプト言語に Ruby を選ぶのはこのためです。 基的にクロージャとは、ブ

  • 関数、オブジェクト、クロージャ - FAX

    (thanks to id:koyachi、del.icio.us/rtk2106) OOPとFPと。関数、オブジェクト、クロージャの使い分けについて考えます。 関数型が良いのか、オブジェクト指向が良いのか、知りたいと思っていました。色々なページを読み、現時点で一応の答えを得ました。 カウンタを例にして、関数、スコープ、オブジェクト、クロージャの順に見て行きます。関数関数は処理です。入力と出力があります。関数型プログラミングでは、関数同士の入力と出力を連結しプログラムが構成されます。 var current = 0; function next(v){ return v + 1 } function previous(v){ return v - 1 } ok( 1 == ( current = next(current) ) ); ok( 2 == ( current = next(cu

  • 第11回 クロージャによる超軽量並行プロセスの簡単実装法

    最近,ネットの一部で「Erlang」(発音はアーランまたはエアラン)というプログラミング言語が流行している(参考リンク)。Erlangはスウェーデンの通信機器メーカーであるエリクソンにて開発された言語で,エリクソン内部や通信業界はもちろん,Twitter(関連記事)などのオンライン・サービスでも採用されているという。 Erlangの特徴は,複数のプロセスが通信をしながら計算をする「並行プログラミング」を,言語の機能として強力にサポートしていることだ。C言語などの逐次プログラミング言語は,プロセスや通信の機能を内蔵しておらず,こうした機能をオペレーティング・システムに「外注」している。しかし,そのような外付けの仕組みは,メモリー消費量や速度,開発効率などの点でオーバーへッドが大きい。Erlangのような並行プログラミング言語では,プロセスや通信といった機能をプリミティブとして実装することによ

    第11回 クロージャによる超軽量並行プロセスの簡単実装法
  • Life is beautiful: Javascript、クロージャを使ったプライベート関数の隠蔽について

    (このエントリーは「Javascriptクイズ:無名関数と実行効率の話」の続編。) 「???」と頭をかしげる太郎に、「じゃあ、これだったらどうかな?」と三郎はコードを書き始めます。 function code2name(code) { var mapping = { 'us': 'United States', 'ja': 'Japan', 'ko': 'Korea', 'ru': 'Russa', 'uk': 'United Kingdom', 'fr': 'France', 'cc': 'China', 'gw': 'Germany' }; return mapping[code] || '(unknown)'; } 「カントリーコードを国名に変換しているんですね。」と太郎。 「どこが問題だか分かる?」 「うーん、マッピングのためのオブジェクトを毎回作り直しているところかな。」 「そう

  • Tociyuki::Diary - perlでのクロージャの3パターン

    id:naoya さんが Perl のクロージャの使い道を考えておられるようです。便上して、私が良く使う、3つのパターンを紹介してみます。なお、単なるコード・リファレンスとしての使い方は除外して付随するコンテキストが意味をもつクロージャの場合に限ります。 (2006年2月14日修正 use Fcntl のパラメータに :DEFAULT が抜けていたので追加しました。) コールバック・パターン イテレータにクロージャを渡して、イテレータの中から繰り返し呼び出してもらってコンテキストに副作用を及ぼす使い方です。クロージャの使い方の中でも最も自然に使えるものだと思います。以下、Ruby のブロック呼び出しっぽくコード・リファレンスを $yield パラメータに渡すことにします。へそ曲がりに BBS の CGI コード用に flock による排他ロックを例にしてみます。 package Mutex

    Tociyuki::Diary - perlでのクロージャの3パターン
  • 指向性メモ クロージャとOOPとJavaScriptの謎仕様

    ページ情報 制作日 2005-07-24T03:14:49+09:00 最終更新日 2005-10-28T11:35:21+09:00 ページ内目次 Navigation Comments Trackbacks Post a comment JavaScriptはクロージャでガリガリ書いていく言語だという説もあるが、OOP原理主義としてはプロトタイプベースでもいいからOOPで書きたいのである。というか、クロージャは中途半端で気持ち悪い。 さて、事の発端は『JavaScript とクロージャ』という記事である。この記事によると、なにやらイベントにクロージャを渡すと幸せになれるという事らしい。ふむふむ、たしかにシンプルでいい感じである。 ……が、しかしだ。オブジェクト指向なアレに対して、クロージャには決定的な弱点が有るはずなのだ。そう、メソッド(クロージャ)間での(メンバ)変数の共有である。

  • Flash でクロージャ。 : torus solutions!

    Flash はクロージャが使えて便利です。 しかし、 最近はオブジェクト指向とか ActionScript 2.0 ばかり取り沙汰されて、 あまりクロージャの便利さが知られていない感じがします。 難しいオブジェクト指向の勉強はとりあえず先延ばしにしておいて、 気楽に使えるクロージャで楽しく ActionScript のプログラミングをしてみませんか? お題:N フレーム目に○○せよ たとえば、 Flash のムービーを再生して 5 フレーム後に、 指定したコードを走らせるには、 どうすればいいでしょうか? ムービークリップの第 5 フレームに、 実行させたいアクションを書けばいいだけです。 しかしこの方法は、 問題をちょっと一般化するだけで使えなくなります。 この 5 フレームの「5」という数値が予めわかっていない場合は、 上の方法は使えませんね。 onEnterFrame では「5 フレ

  • いやなブログ: JavaScript とクロージャ

    JavaScript とクロージャ JavaScript プログラミングはなかなかおもしろいよ、と知人に言ってみたところ、 全然信用されずに怪訝な顔をされる、という目に遭いました。 クロージャが使えて DOM ツリーにイベントハンドラを簡単に追加できるよ、と続けると多少は興味を持ってもらえるようなので、クロージャを使ったサンプルプログラムを書いてみました。 箱の中でマウスカーソルを適当に動かしてください。 このプログラムでは各セルの色の濃さをクロージャを使って保持しています。makeHandler という関数の depth という変数がそれです。クロージャを使うと、個々のイベントハンドラごとに独立した状態を簡単に持たせされるのがポイントです。 別にクロージャを使わなくてもいいようなプログラムですが (クロージャではなく DOM のエレメントに状態を持たせるとか)、こういう風にも書けるよ、と

  • 1