摘要:小案例: $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. 当做返回值的时候;
这是为什么呢?
因为这二种场景,我们只关心它的具体值,而并不关心叫什么名字.
就好比我们需要一个手机,我们有时