匿名函数 and 闭包函数

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

发布手记

热门词条