【转载】PHP 箭头函数( Lambda表达式 )
参考
环境
| 软件/系统 | 版本 | 说明 | 
|---|---|---|
| windows | 10 | |
| php | 8.2.5-nts-Win32-vs16-x64 | 箭头函数要求 >=7.4.0 | 
备注
如果需要详细了解,请点击本文参考内的官网链接,本文只是简单记录
浏览 learnku 中文 Laravel 文档的时候忽然发现了 php 的 lambda 写法,后面搜索了下 php7.4 发布时间是 2019,过去了好久才知道。。。
注意
与匿名函数相同点
- 匿名函数和箭头函数都是 Closure 类的实现。
- 箭头函数支持与 匿名函数 相同的功能(我理解为箭头函数类似匿名函数的简写)。和匿名函数一样,箭头函数语法同样允许标准的函数声明,包括参数和返回类型、缺省值、变量,以及通过引用传递和返回
与匿名函数不同点
- 箭头函数的基本语法为 fn (argument_list) => expr。
- 箭头函数其父作用域的变量总是自动的。当表达式中使用的变量是在父作用域中定义的,它将被隐式地按值捕获。箭头函数会自动绑定上下文变量,这相当于对箭头函数内部使用的每一个变量 $x 执行了一个 use($x)。这意味着不可能修改外部作用域的任何值,若要实现对值的修改,可以使用 匿名函数 来替代。
代码
合法的箭头函数例子
<?php
fn(array $x) => $x;
static fn(): int => $x;
fn($x = 42) => $x;
fn(&$x) => $x;
fn&($x) => $x;
fn($x, ...$rest) => $rest;
?>
箭头函数自动捕捉变量的值,即使在嵌套的情况下
<?php
$z = 1;
$fn = fn($x) => fn($y) => $x * $y + $z;
// 输出 51
var_export($fn(5)(10));
?>
来自外部范围的值不能在箭头函数内修改
<?php
$x = 1;
$fn = fn() => $x++; // 不会影响 x 的值
$fn();
var_export($x);  // 输出 1
?>
    博  主 :夏秋初
地 址 :https://www.cnblogs.com/xiaqiuchu/p/17347041.html
 
如果对你有帮助,可以点一下 推荐 或者 关注 吗?会让我的分享变得更有动力~
转载时请带上原文链接,谢谢。
    
地 址 :https://www.cnblogs.com/xiaqiuchu/p/17347041.html
如果对你有帮助,可以点一下 推荐 或者 关注 吗?会让我的分享变得更有动力~
转载时请带上原文链接,谢谢。
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号