介绍lambda表达式是什么和用在什么地方

lambda表达式,也可称为closure(闭包),通常是在需要一个函数,但又不想费神去命名一个函数的场合下使用,也就是指匿名函数。由于其几乎被所有主流开发语言支持。
是java8新引入的一种语法,是一种紧凑的传递代码的方式。

使用lambda表达式可以使代码变的更加简洁紧凑。

lambda允许把函数作为一个方法的参数(函数作为参数传递进方法中)。

以下是lambda表达式的重要特征:
可选类型声明:不需要声明参数类型,编译器可以统一识别参数值。
可选的参数圆括号:一个参数无需定义圆括号,但多个参数需要定义圆括号。
可选的大括号:如果主体包含了一个语句,就不需要使用大括号。
可选的返回关键字:如果主体只有一个表达式返回值则编译器会自动返回值,大括号需要指定明表达式返回了一个数值。

PHP 5.3

PHP5.3增加了Lambda的支持,对于接受回调函数的PHP函数来说,lambda表达式非常方便。比如使用array_map函数遍历数组,并将回调结果重新赋值给数字各元素。在早期PHP版本中,我们在调用array_map之前,必须事先定义好回调函数,比如:

function quoteWords()
{
     if (!function_exists ('quoteWordsHelper')) {
         function quoteWordsHelper($string) {
             return preg_replace('/(\w)/','"$1"',$string);
         }
      }
      return array_map('quoteWordsHelper', $text);
}

现在PHP5.3对lambda表达式的支持,使得编码根据简单。如下使用lambda表达式的实现:

function quoteWords()
{
     return array_map('quoteWordsHelper',
            function ($string) {
                return preg_replace('/(\w)/','"$1"',$string);
            });
}

Javascript

javascript中的lambda表达式通常称为匿名函数,如果你使用过jquery库,那么你肯定知道匿名函数,这里主要作为回调函数使用。比如:

[js] view plain copy
$('#submit').on('click', function(){ functionbody. })  

其中方法on的第二个参数就是匿名函数,javascript中的你们函数还有其他存在形式,比如:

[js] view plain copy
var func = new Function('x', 'return 2*x;');  

或者

[js] view plain copy
var func = function(x) { return 2*x; }  

还有就是很多js库常用的方式,表示创建匿名函数,并调用之:

[js] view plain copy
(function(x, y) {  
    alert(x+y);  
})(2, 3);  

总结

lambda表达式的出现简化了编码量,多用于函数回调、事件、匿名函数,并且与闭包的结合使用,更能发挥强大的作用。

以上文章来源于多个文章内容结合 挑选块 做出PHP使用者纪录

你可能感兴趣的:(php相关知识)