摘要:小案例: $fun = function (){ $arr = array('first' => 1, 'second' => 2, 'third' =>
小案例: $fun = function (){ $arr = array('first' => 1, 'second' => 2, 'third' => 3); $cfun = function () use ($arr){ return gettype($arr); }; return $cfun(); }; echo $fun(); #1、在匿名函数中定义和执行 $fun1=function(){ $bl = '$cfun1'; $cfun1=function() use ($bl){ return '我是匿名函数中的匿名函数,其实就是匿名函数 '.$bl.' 变成变量的值'; }; return $cfun1(); }; echo $fun1(); #2、作为一个值传给匿名函数执行 $bl = '$cfun2'; $cfun2=function() use ($bl){ return '我其实就是变量 '.$bl.' 的值当参数传给匿名函数'; }; $fun2=function(callable $cfun2){ return $cfun2(); }; echo $fun2($cfun2); #3、匿名函数中定义作为返回值在匿名函数外面执行 $fun3=function(){ $bl = '$cfun3'; $cfun3=function() use ($bl){ return '我是匿名函数中的匿名函数,是匿名函数 '.$bl.' 变成返回值在被外部执行'; }; return $cfun3; }; echo $fun3()();
自我理解一个匿名函数通过下面三步变成闭包:
1、在另一个匿名函数中定义、执行
2、在另一个匿名函数中定义,当作一个返回值,执行另一个函数时结果仅是一个函数并不是执行
3、作为一个参数传递给另一个匿名函数使用
批改老师:天蓬老师批改时间:2018-11-02 11:50:55
老师总结:想一下什么时候使用函数不需要名称呢?
1. 当做参数的时候;
2. 当做返回值的时候;
这是为什么呢?
因为这二种场景,我们只关心它的具体值,而并不关心叫什么名字.
就好比我们需要一个手机,我们有时