匿名函数中的参数块有什么用
What is the use for the argument block in anonymous functions
在这个例子中:
$foo = function () use (){
// ^---------^ what is the use?
}
除了作为函数之外,我们还可以使用 use ()
部分将数据导入函数,就像常规函数一样:
function bar ($foo){
}
但我不明白 function ()
部分有什么用?
例如:
$a = 1;
$foo = function ($b, $c) use ($a)
{
echo $a . PHP_EOL;
echo $b . PHP_EOL;
echo $c . PHP_EOL;
};
$foo(2, 3);
$a = 5;
$foo(7, 8);
会输出:
1
2
3
1
7
8
$b, $c - 将是您在执行时传递的参数。
$a 创建时 bound/imported。所以如果你在 $foo 定义之后改变它,它不会改变。
参数块用于输入参数。所以如果我定义
$foo = function($bar) use ($baz) {
return $bar + $baz;
}
然后我,比如说,将 $foo
传递给另一个函数或将其绑定到另一个 class,我可以这样做
function bonk($bar, $foo) {
$baz = 4;
return $foo($bar);
}
在其他地方调用
// Returns 7
bonk(3, $foo);
一个允许您从上下文中获取变量,而另一个必须传入。例如,我在定义 $bonk 的 class 中有 $baz 可供我使用,所以我将其传入,但是我还不知道 $bar 会是什么,直到它在其他地方被调用并传入 $bar。
好吧,假设我是一个名为 Cats 的 class,我有一个对象 SiameseCat 可供我使用。我有一个名为 doTheThing 的方法,它接受一个函数和一个参数。它告诉猫该做什么,以及选择做什么。所以它总是有相同的猫,但取决于我从哪里称呼它,我可以让暹罗猫对不同的名词做不同的动词,但我知道这是我的猫做的,因为那是我定义猫的地方。
在这个例子中:
$foo = function () use (){
// ^---------^ what is the use?
}
除了作为函数之外,我们还可以使用 use ()
部分将数据导入函数,就像常规函数一样:
function bar ($foo){
}
但我不明白 function ()
部分有什么用?
例如:
$a = 1;
$foo = function ($b, $c) use ($a)
{
echo $a . PHP_EOL;
echo $b . PHP_EOL;
echo $c . PHP_EOL;
};
$foo(2, 3);
$a = 5;
$foo(7, 8);
会输出:
1
2
3
1
7
8
$b, $c - 将是您在执行时传递的参数。 $a 创建时 bound/imported。所以如果你在 $foo 定义之后改变它,它不会改变。
参数块用于输入参数。所以如果我定义
$foo = function($bar) use ($baz) {
return $bar + $baz;
}
然后我,比如说,将 $foo
传递给另一个函数或将其绑定到另一个 class,我可以这样做
function bonk($bar, $foo) {
$baz = 4;
return $foo($bar);
}
在其他地方调用
// Returns 7
bonk(3, $foo);
一个允许您从上下文中获取变量,而另一个必须传入。例如,我在定义 $bonk 的 class 中有 $baz 可供我使用,所以我将其传入,但是我还不知道 $bar 会是什么,直到它在其他地方被调用并传入 $bar。
好吧,假设我是一个名为 Cats 的 class,我有一个对象 SiameseCat 可供我使用。我有一个名为 doTheThing 的方法,它接受一个函数和一个参数。它告诉猫该做什么,以及选择做什么。所以它总是有相同的猫,但取决于我从哪里称呼它,我可以让暹罗猫对不同的名词做不同的动词,但我知道这是我的猫做的,因为那是我定义猫的地方。