在 PHP 中柯里化 in_array()
Currying in_array() in PHP
不一定对PHP如何做这个或任何事情有问题,更多只是出于好奇的问题。我熟悉函数式编程,但绝不是专家。我目前正在编写函数,虽然我不要求它们具有功能性,但将来可能会改变。所以我说最好做好准备。
我的问题是,您如何柯里化 in_array
这样的函数?
据我了解,我们有两个参数,needle
和 haystack
。
调用函数时似乎都需要。
我们必须在函数的开头就知道我们要搜索的数组,还必须知道我们要搜索的是什么。
对我来说,似乎很难强制执行任何部分应用程序或柯里化解决方案,我们可能会在以后知道其中一个或另一个。
我想你可以有一个非泛型函数,你可以在函数中指定 needle
。我确实在 Google 中看到了一些关于飞溅的内容。如果要求重写函数并对其进行柯里化,您将如何处理?我知道我指定了 PHP 但我想只要规格相同,任何语言都很好。
嗯,它在 PHP 中相对简单 - 几乎与将函数视为值的任何其他语言相同。 For example:
function create_search_by_array($arr) {
return function($needle) use ($arr) {
return in_array($needle, $arr);
};
}
$search_in_1_to_10 = create_search_by_array(range(1, 10));
var_dump($search_in_1_to_10(1)); // true
var_dump($search_in_1_to_10(10)); // true
var_dump($search_in_1_to_10(11)); // false
这里唯一需要注意的是 use ($arr)
构造:没有它,内部函数将无法从外部范围看到相应的变量。
不一定对PHP如何做这个或任何事情有问题,更多只是出于好奇的问题。我熟悉函数式编程,但绝不是专家。我目前正在编写函数,虽然我不要求它们具有功能性,但将来可能会改变。所以我说最好做好准备。
我的问题是,您如何柯里化 in_array
这样的函数?
据我了解,我们有两个参数,needle
和 haystack
。
调用函数时似乎都需要。
我们必须在函数的开头就知道我们要搜索的数组,还必须知道我们要搜索的是什么。
对我来说,似乎很难强制执行任何部分应用程序或柯里化解决方案,我们可能会在以后知道其中一个或另一个。
我想你可以有一个非泛型函数,你可以在函数中指定 needle
。我确实在 Google 中看到了一些关于飞溅的内容。如果要求重写函数并对其进行柯里化,您将如何处理?我知道我指定了 PHP 但我想只要规格相同,任何语言都很好。
嗯,它在 PHP 中相对简单 - 几乎与将函数视为值的任何其他语言相同。 For example:
function create_search_by_array($arr) {
return function($needle) use ($arr) {
return in_array($needle, $arr);
};
}
$search_in_1_to_10 = create_search_by_array(range(1, 10));
var_dump($search_in_1_to_10(1)); // true
var_dump($search_in_1_to_10(10)); // true
var_dump($search_in_1_to_10(11)); // false
这里唯一需要注意的是 use ($arr)
构造:没有它,内部函数将无法从外部范围看到相应的变量。