gpt4 book ai didi

php - 这里第二个返回函数的目的是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:44:45 24 4
gpt4 key购买 nike

这个例子取自 phptherightway 的函数式编程页面。

<?php
/**
* Creates an anonymous filter function accepting items > $min
*
* Returns a single filter out of a family of "greater than n" filters
*/
function criteria_greater_than($min)
{
return function($item) use ($min) {
return $item > $min;
};
}

$input = array(1, 2, 3, 4, 5, 6);

// Use array_filter on a input with a selected filter function
$output = array_filter($input, criteria_greater_than(3));

print_r($output); // items > 3

return function() 的目的是什么?

我刚写了这个,它做了同样的事情。

array_filter($input, function($input) use ($min) {
return $input > $min;
}); // items > 3

即使我将此回调指定给一个函数,辅助函数似乎也没有必要。

我是否忽略了什么或者它有不同的目的吗?

最佳答案

criteria_greater_than 返回您想要返回的值是绝对必要的。例如。对于返回值 5 的函数:

function get_5() {
return 5;
}

您可以像 $var = get_5(); 一样使用它,但是如果您将它设置为常量,您只需使用 $var = 5;call_my_function(5)。请注意,您需要使用 return 才能返回函数中的任何内容。现在考虑这个函数:

function get_fx($x)
{
return function () use ($x)
{
return $x;
};
}

$v5 = get_fx(5);
$v6 = get_fx(6);

$v5$v6 是什么?它们是函数,因为这就是它们返回的内容。事实上 $v5() == get_5() 是真的,但是 $6() == get_5() 是假的,因为 get_fx 返回不同的函数(闭包)依赖于参数通过。

如果您要跳过第一个 return,您将不会从第一个函数中得到任何东西。例如。 $v5 和 $v6 不会有任何分配。如果您跳过返回函数中的第二个 return,它们在调用时不会返回任何内容,即。 $v5() 不会返回 5,$v6() 也不会返回 6。

关于php - 这里第二个返回函数的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20353916/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com