More Related Content
Similar to 5分でわかるPHPのクロージャ(web公開版) (20)
5分でわかるPHPのクロージャ(web公開版)
- 2. 私
2
自己紹介します
2011/04/02 5分でわかるPHPのクロージャ
- 3. 私
3
● @hajikami
● http://my-rest.icca.jp/blog/
– PHPでできる関数型プログラミング
● 社会人2年目
● PHPer…のはず
– 仕事ではPro*CやJavaを読んでる
2011/04/02 5分でわかるPHPのクロージャ
- 4. 話をする前に
4
【前提:対象者】
PHPで関数が作れる人
2011/04/02 5分でわかるPHPのクロージャ
- 5. 前提:これがわかること
5
<?php
function less_than($a, $b) {
return ($a < $b);
}
2011/04/02 5分でわかるPHPのクロージャ
- 6. 結論
6
これで銅鑼がなっても大丈夫!
(註:本LTでは5分を過ぎると銅鑼が鳴って強制終了する)
2011/04/02 5分でわかるPHPのクロージャ
- 7. 結論
7
● クロージャ
● 関数Aの中にある、関数Bのこと
● 関数Aで使っている変数は、
関数Bでも使うことが出来る
– 引数として与えなくても、使える
2011/04/02 5分でわかるPHPのクロージャ
- 8. 流れ
8
関数
↓
無名関数
↓
クロージャ
2011/04/02 5分でわかるPHPのクロージャ
- 9. 関数
9
<?php
// これが普通の関数
function less_than($a, $b) {
return ($a < $b);
}
// 呼び出しはこんな感じ
if(less_than($a, $b)) ...
2011/04/02 5分でわかるPHPのクロージャ
- 10. 無名関数
10
<?php
// その名のとおり、名前のない関数
function($a, $b) {
return ($a < $b);
}
2011/04/02 5分でわかるPHPのクロージャ
- 11. 無名関数
11
<?php
// 無名関数は変数に入れられるよ
$less_than = function($a, $b) {
return ($a < $b);
}
// 呼び出しはこんな感じ
if($less_than($a, $b)) ...
2011/04/02 5分でわかるPHPのクロージャ
- 12. 無名関数
12
<?php
function some_process($a) {
// 関数内で作れば、ローカルな関数が作れるよ!
$less_than = function($a, $b) {
return ($a < $b);
}
// 呼び出しはこんな感じ
if($less_than($a, $b)) ...
}
2011/04/02 5分でわかるPHPのクロージャ
- 13. クロージャじゃない
13
<?php
function some_process($a) {
// $aを毎回与えるの手間だし、これじゃだめなの?
$less_than_a = function($b) { // ダメです!
return ($a < $b);
}
// 呼び出しはこんな感じ?
if($less_than_a($b)) ...
}
2011/04/02 5分でわかるPHPのクロージャ
- 14. クロージャ
14
<?php
function some_process($a) {
// useキーワードを使ってください!
$less_than_a = function($b) use ($a) {
return ($a < $b);
}
// 呼び出しはこんな感じ
if($less_than_a($b)) ...
}
2011/04/02 5分でわかるPHPのクロージャ
- 15. まとめ
15
やった!銅鑼がなってない!
2011/04/02 5分でわかるPHPのクロージャ
- 16. まとめ
16
● クロージャ
● 関数Aの中にある、関数Bのこと
– some_processの中にある、$less_than_a
● 関数Aで使っている変数は、
関数Bでも使うことが出来る
– 引数として与えなくても、使える
– 引数がだらだらと増えることが無くなる!
● PHPの場合
– 5.3.0 以降で使える
– useキーワードが必要
– 変数に無名関数を格納すると使いやすいよ!
2011/04/02 5分でわかるPHPのクロージャ
- 17. 以上
17
ありがとうございました!
2011/04/02 5分でわかるPHPのクロージャ