2

任何人都可以解释 php 中的匿名函数、lambda 函数和闭包吗?它们的作用是什么,以及有什么聪明的用途。

4

1 回答 1

1

匿名函数、lambda 函数和闭包都是一样的。它们允许您定义没有指定名称的函数。通常,您使用它来使代码更具可读性。

$first = function ($ar) { return $ar[0] ? $ar : null };
$array = [1, 2, 3];
$first($array);

=> 1

简单的例子,但应该给你的想法。重要的是要注意,您将这样做而不是仅在该功能在其他任何地方都没有用时才定义正常功能。如果你会在很多地方使用它,你可能应该给函数更大的范围(比如 util 类中的公共函数)以避免违反 DRY。

闭包还允许您从父作用域继承变量。

$min = 0;
$max = 10;
$between = function ($v) use ($min, $max) { return $v >= $min and $v <= $max; };
$input = [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];
$output = array_filter($input, $between);

=> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

array_map(), array_reduce(), 和array_filter()是使用匿名函数的一个特别强大的地方,因为它们需要一个带有一个参数的函数作为参数。

这个文档有更多的例子,Fabien Potencier的优秀博客文章也是如此。

于 2013-08-01T05:45:30.710 回答