このカテゴリーの登録数:1件 表示 : 1 - 1 / 1
PHPのcreate_functionでクロージャできるんじゃないかな。と思って書いてみた。 そもそもクロージャについて詳しく理解してないけど、PHPでやるならこんな感じでしょうか
class closure { protected $sum = 0; public function fib($n){ $this->sum++; if($n == 0){ return 0; } else if($n == 1){ return 1; } else { return $this->fib($n - 1) + $this->fib($n - 2); } } public function calling(){ return $this->sum; } public static function create(){ return new closure; } public function __clone(){ $this->sum = 0; } } function func(){ return create_function('', ' static $closure; $n = func_get_arg(0); if($closure === null){ $closure = closure::create(); } return "fib :" . $closure->fib($n) . "(" . $closure->calling() . ")"; '); }
ここをマネしてフィボナッチ関数を作ってみた(しかも完全じゃない) あと、呼び出し回数(sum)なんかも入れておく
実行してみる
$a = func(); var_dump($a(0)); var_dump($a(0)); var_dump($a(12)); $b = func(); var_dump($b(4)); var_dump($b(7));
string(9) "fib :0(1)" string(9) "fib :0(2)" string(13) "fib :144(467)" string(9) "fib :3(9)" string(11) "fib :13(50)"
phpでやるならclass使わないとダメかな。こりゃ。 よく分からなくなってきたので、後は任せます。 ref - steike.com » Php Closures
詳細検索
/** * @author hata */
PHPのcreate_functionでクロージャできるんじゃないかな。と思って書いてみた。
そもそもクロージャについて詳しく理解してないけど、PHPでやるならこんな感じでしょうか
ここをマネしてフィボナッチ関数を作ってみた(しかも完全じゃない)
あと、呼び出し回数(sum)なんかも入れておく
実行してみる
phpでやるならclass使わないとダメかな。こりゃ。
よく分からなくなってきたので、後は任せます。
ref - steike.com » Php Closures