第129回 クロージャは作られたときの状態を保持するわけではなく参照する
第55回 クロージャ - bingo_nakanishiの他言語出身者のためのPerl入門
第56回 クロージャの実践的使いどころ - bingo_nakanishiの他言語出身者のためのPerl入門
第58回 クロージャをもっとていねいに - bingo_nakanishiの他言語出身者のためのPerl入門
私は今まで、「クロージャは作られたときの状態を保持する」という言い方をしてきたが、
これは厳密には間違いだったようだ。
状態を保持しているように見える例
use strict; sub h{ my $c = shift; sub { $c++ }; }; my $h = h(5); print $h->(), "\n"; print $h->(), "\n"; print $h->(), "\n";
結果:
5 6 7
この例だと、確かに作られたときの状態を持っており、その状態に変化を加えているように見える。
厳密に言うと「作られたときの変数を参照している」
しかし、次の例を見てみると、
use strict; sub h{ my $c = shift; my $fun = sub { $c++ }; # ここで作った $c = 10; # $cを変更 return $fun; # 作った関数を返すのはココ } my $h = h(5); print $h->(), "\n"; print $h->(), "\n"; print $h->(), "\n";
結果:
10 11 12
このように、$cは作られたときではなく、$c = 10;が実行されたものを見ている。
つまりこれは、関数が作れたときの状態を保持するのではなく、作られたところの外側の変数をただ参照していることを示している。
同じ変数をクロージャとして持つ関数を2つ返してみる
use strict; sub h{ my $c = shift; [ sub{ $c++; print $c, "\n" }, sub{ $c++; print $c, "\n" } ]; } my($fun1, $fun2) = @{h(5)}; $fun1->(); $fun1->(); $fun2->(); $fun1->();
結果:
6 7 8 9
このようにお互いに同じ変数をクロージャとして持つ場合は、
参照であるので、お互いの関数は同じ$cを更新している。
Rubyでも念のために見てみる
class Hoge def foo c = 1 [1,2,3].each do |i| c=c+1 # cを更新 puts c end puts puts c # cが更新されているのがわかる end end Hoge.new.foo
結果:
2 3 4 4
確かに外側のcが更新されている。
第130回 Javaを始めるにあたって読んだ本
私はJavaは得意ではない。
だが、世の中にはやらなければならないということがあるのだ。
Javaの「仕組み」・「文法」
![Java 謎+落とし穴 徹底解明 (標準プログラマーズライブラリ) Java 謎+落とし穴 徹底解明 (標準プログラマーズライブラリ)](https://images-fe.ssl-images-amazon.com/images/I/511SZ24JQNL._SL160_.jpg)
Java 謎+落とし穴 徹底解明 (標準プログラマーズライブラリ)
- 作者: 前橋和弥
- 出版社/メーカー: 技術評論社
- 発売日: 2001/12/01
- メディア: 大型本
- 購入: 8人 クリック: 40回
- この商品を含むブログ (21件) を見る
確かにポインターはないかもしれないが、
もう全部「参照」と言ってもいいくらいなのがJava。
というか「参照」がわかっていないとなにもできないということに気づかせてくれる本。
![詳解 Javaプログラミング第2版〈VOLUME1〉 詳解 Javaプログラミング第2版〈VOLUME1〉](https://images-fe.ssl-images-amazon.com/images/I/51JO6s3cJHL._SL160_.jpg)
- 作者: パトリックニーメイヤー,ジョナサンナッセン,Patrick Niemeyer,Jonathan Knudsen,滝沢徹,鈴木憲子,牧野祐子
- 出版社/メーカー: オライリージャパン
- 発売日: 2003/03
- メディア: 単行本
- 購入: 3人 クリック: 11回
- この商品を含むブログ (11件) を見る
![Sun SJC-P認定ガイド 310-055対応 Sun SJC-P認定ガイド 310-055対応](https://images-fe.ssl-images-amazon.com/images/I/41uiybJIb0L._SL160_.jpg)
- 作者: Kathy Sierra,Bert Bates,トップスタジオ
- 出版社/メーカー: 日経BP社
- 発売日: 2006/06/29
- メディア: 大型本
- 購入: 8人 クリック: 191回
- この商品を含むブログ (23件) を見る
ただ、分量が多いので、
正直Java初学者には読むのに時間がかかりすぎた感も否めない。
![徹底攻略 Javaアソシエイツ問題集[310-019]対応 (ITプロ/ITエンジニアのための徹底攻略) 徹底攻略 Javaアソシエイツ問題集[310-019]対応 (ITプロ/ITエンジニアのための徹底攻略)](https://images-fe.ssl-images-amazon.com/images/I/5130E00J1WL._SL160_.jpg)
徹底攻略 Javaアソシエイツ問題集[310-019]対応 (ITプロ/ITエンジニアのための徹底攻略)
- 作者: 株式会社CSKシステムズ,八木裕乃,明壁敦子,須澤秀人,ソキウス・ジャパン
- 出版社/メーカー: インプレス
- 発売日: 2006/02/02
- メディア: 大型本
- 購入: 4人 クリック: 31回
- この商品を含むブログ (13件) を見る
![徹底攻略 Java2 プログラマ問題集 Platform5.0 対応 (ITプロ/ITエンジニアのための徹底攻略) 徹底攻略 Java2 プログラマ問題集 Platform5.0 対応 (ITプロ/ITエンジニアのための徹底攻略)](https://images-fe.ssl-images-amazon.com/images/I/51CD0oOAiiL._SL160_.jpg)
徹底攻略 Java2 プログラマ問題集 Platform5.0 対応 (ITプロ/ITエンジニアのための徹底攻略)
- 作者: 八木裕乃,明壁敦子,株式会社ソキウス・ジャパン,須澤秀人
- 出版社/メーカー: インプレス
- 発売日: 2006/11/24
- メディア: 単行本(ソフトカバー)
- 購入: 6人 クリック: 98回
- この商品を含むブログ (25件) を見る
そして知識の定着ぶりはどうだろうか?
それを黒本で試した。
Javaの用語
![超図解 Java入門 GUI編 (超図解シリーズ) 超図解 Java入門 GUI編 (超図解シリーズ)](https://images-fe.ssl-images-amazon.com/images/I/410B2BJK2BL._SL160_.jpg)
- 作者: エクスメディア
- 出版社/メーカー: エクスメディア
- 発売日: 2003/08
- メディア: 単行本
- クリック: 2回
- この商品を含むブログ (5件) を見る
という場面によく出くわす。特に私がわからなかったのが
「コンテナ」という単語。
「入れ物」という意味合いはわかっていたが、
Java的にはなにが「入れ物」なのだろうか?
GUIプログラムを少し覗いてみると理解できるかもしれない。
Eclipse
![Eclipse 実践開発入門 -Java・オープンソース開発・Eclipse3.2 Eclipse 実践開発入門 -Java・オープンソース開発・Eclipse3.2](https://images-fe.ssl-images-amazon.com/images/I/41CtMB3ci%2BL._SL160_.jpg)
Eclipse 実践開発入門 -Java・オープンソース開発・Eclipse3.2
- 作者: 河村嘉之/池正人/川尻剛/松前健太郎(日立ソフトウェアエンジニアリング株式会社)
- 出版社/メーカー: 技術評論社
- 発売日: 2007/05/14
- メディア: 大型本
- クリック: 10回
- この商品を含むブログ (9件) を見る
Eclipseの機能は「どんだけあんねん! てか、その設定ってどこからできんねん!」
と言いたくなるほどいっぱいある。この本で、ざっと機能を掴める。
Javaのオブジェクト指向
![豆蔵セミナーライブオンテキスト(1) わかるオブジェクト指向 豆蔵セミナーライブオンテキスト(1) わかるオブジェクト指向](https://images-fe.ssl-images-amazon.com/images/I/51T0VYMGETL._SL160_.jpg)
豆蔵セミナーライブオンテキスト(1) わかるオブジェクト指向
- 作者: 山田隆太
- 出版社/メーカー: 技術評論社
- 発売日: 2005/07/29
- メディア: 単行本
- 購入: 1人 クリック: 22回
- この商品を含むブログ (17件) を見る
![すいすい習得 UMLモデリング (豆蔵セミナーライブオンテキスト (2)) すいすい習得 UMLモデリング (豆蔵セミナーライブオンテキスト (2))](https://images-fe.ssl-images-amazon.com/images/I/51DF18XHVKL._SL160_.jpg)
すいすい習得 UMLモデリング (豆蔵セミナーライブオンテキスト (2))
- 作者: 岡村敦彦,株式会社豆蔵
- 出版社/メーカー: 技術評論社
- 発売日: 2006/04/11
- メディア: 単行本(ソフトカバー)
- 購入: 2人 クリック: 11回
- この商品を含むブログ (15件) を見る
![Java・オブジェクト指向の壁を突破する 抽象化プログラミング入門 (豆蔵セミナーライブオンテキスト 3) Java・オブジェクト指向の壁を突破する 抽象化プログラミング入門 (豆蔵セミナーライブオンテキスト 3)](https://images-fe.ssl-images-amazon.com/images/I/51EibJGP5kL._SL160_.jpg)
Java・オブジェクト指向の壁を突破する 抽象化プログラミング入門 (豆蔵セミナーライブオンテキスト 3)
- 作者: 岡村敦彦/山田隆太,A5
- 出版社/メーカー: 技術評論社
- 発売日: 2007/08/10
- メディア: 単行本(ソフトカバー)
- クリック: 26回
- この商品を含むブログ (10件) を見る
Perlでもオブジェクト指向。
Rubyもオブジェクト指向。
JavaScriptだってオブジェクト指向。
その中で、
オブジェクト指向って「こういうモノ!」と強く主張しているのがJava界隈のように感じる。
そんなJava界隈で通じるオブジェクト指向をこの3冊で学べる。
シーケンス図はこの本で理解できました。
クラスを作って、インスタンスを生成するJavaの世界にさあ行こう。
小話系
![15歳からはじめるJAVAわくわくゲームプログラミング教室―Windows98/2000/Me/XP対応 15歳からはじめるJAVAわくわくゲームプログラミング教室―Windows98/2000/Me/XP対応](https://images-fe.ssl-images-amazon.com/images/I/515MZZYXYQL._SL160_.jpg)
15歳からはじめるJAVAわくわくゲームプログラミング教室―Windows98/2000/Me/XP対応
- 作者: 大槻有一郎
- 出版社/メーカー: ラトルズ
- 発売日: 2005/03/01
- メディア: 単行本
- 購入: 3人 クリック: 40回
- この商品を含むブログ (13件) を見る
System.out の outが参照しているオブジェクトなどの小話が随所にあり面白かった。
コレクションフレームワーク
![Javaコレクションフレームワーク Javaコレクションフレームワーク](https://images-fe.ssl-images-amazon.com/images/I/41ZtFnIdHGL._SL160_.jpg)
- 作者: 田中良浩,小山博史
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2005/03/01
- メディア: 単行本
- 購入: 2人 クリック: 22回
- この商品を含むブログ (10件) を見る
Javaの開発は困難を極めるかもしれない。
あと普通に開発でコレクションフレームワークは使われているので
わかってないと置いてきぼりをくらう。
しかし、Perlの配列とハッシュだけあればいいのではないか?
MapとPerlのハッシュってなにが違うんだ....などの思考が理解を邪魔し、
コレクションフレームワークは先輩の方や友人にもかなり教えていただきました。
JavaでのWEBアプリ
![一番やさしいJSP & サーブレット入門塾 第2版 (DB Magazine SELECTION) 一番やさしいJSP & サーブレット入門塾 第2版 (DB Magazine SELECTION)](https://images-fe.ssl-images-amazon.com/images/I/51U6sRa5boL._SL160_.jpg)
一番やさしいJSP & サーブレット入門塾 第2版 (DB Magazine SELECTION)
- 作者: 樋口研究室,山本隆之
- 出版社/メーカー: 翔泳社
- 発売日: 2008/03/19
- メディア: 単行本(ソフトカバー)
- 購入: 1人 クリック: 18回
- この商品を含むブログ (3件) を見る
どういうモノをさすのだろうかと思い買ったもの。
JavaでWEBアプリを作るときのサーバ構成の基本はこのように構成する
といったようなことが学べた。
![Webコンポーネントディベロッパ(SJC-WC) (SUN教科書) Webコンポーネントディベロッパ(SJC-WC) (SUN教科書)](https://images-fe.ssl-images-amazon.com/images/I/51DDR3TSBXL._SL160_.jpg)
Webコンポーネントディベロッパ(SJC-WC) (SUN教科書)
- 作者: 米山学
- 出版社/メーカー: 翔泳社
- 発売日: 2006/07/11
- メディア: 単行本(ソフトカバー)
- 購入: 4人 クリック: 31回
- この商品を含むブログ (19件) を見る
Javaではこの仕様に基づき作っていく事になる。
![徹底攻略Webコンポーネントディベロッパ問題集―310-081対応 (ITプロ/ITエンジニアのための徹底攻略) 徹底攻略Webコンポーネントディベロッパ問題集―310-081対応 (ITプロ/ITエンジニアのための徹底攻略)](https://images-fe.ssl-images-amazon.com/images/I/51kudBuM0vL._SL160_.jpg)
徹底攻略Webコンポーネントディベロッパ問題集―310-081対応 (ITプロ/ITエンジニアのための徹底攻略)
- 作者: ソキウス・ジャパン,岩崎正嗣,山本大,吉田豊,藤原久美子
- 出版社/メーカー: インプレス
- 発売日: 2007/04/01
- メディア: 単行本
- 購入: 3人 クリック: 29回
- この商品を含むブログ (16件) を見る