首页 > 编程语言 >【转载】PHP 箭头函数( Lambda表达式 )

【转载】PHP 箭头函数( Lambda表达式 )

时间:2023-04-23 16:55:08浏览次数:46  
标签:函数 作用域 箭头 匿名 变量 PHP fn Lambda

参考

环境

软件/系统 版本 说明
windows 10
php 8.2.5-nts-Win32-vs16-x64 箭头函数要求 >=7.4.0

备注

如果需要详细了解,请点击本文参考内的官网链接,本文只是简单记录

浏览 learnku 中文 Laravel 文档的时候忽然发现了 php 的 lambda 写法,后面搜索了下 php7.4 发布时间是 2019,过去了好久才知道。。。

注意

与匿名函数相同点

  1. 匿名函数和箭头函数都是 Closure 类的实现。
  2. 箭头函数支持与 匿名函数 相同的功能(我理解为箭头函数类似匿名函数的简写)。和匿名函数一样,箭头函数语法同样允许标准的函数声明,包括参数和返回类型、缺省值、变量,以及通过引用传递和返回

与匿名函数不同点

  1. 箭头函数的基本语法为 fn (argument_list) => expr。
  2. 箭头函数其父作用域的变量总是自动的。当表达式中使用的变量是在父作用域中定义的,它将被隐式地按值捕获。箭头函数会自动绑定上下文变量,这相当于对箭头函数内部使用的每一个变量 $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

?>

标签:函数,作用域,箭头,匿名,变量,PHP,fn,Lambda
From: https://www.cnblogs.com/xiaqiuchu/p/17347041.html

相关文章

  • PHP Warning: json_encode(): Invalid UTF-8 sequence in argument
    今天调试代码的时候发现json_encode()报错问题如下描述:问题代码:$requestData=json_encode(array('wechat_group_name'=>$wechat_group_name,'text_message'=>$text_message,//该值是中文一个拼接字符串));能后报错PHPWarning:json_encode():Inv......
  • PHP 常用数组函数汇集,详细解释描述
    PHPArray函数函数描述PHParray()创建数组。3array_change_key_case()返回其键均为大写或小写的数组。4array_chunk()把一个数组分割为新的数组块。4array_combine()通过合并两个数组来创建一个新数组。5array_count_values()用于统计数组中所有值出现的次数。4array_diff()返回两......
  • php exit、return、break、continue之间的区别,详细介绍
    相信大家在php开发中有几个常用的停止程序和循环的关键字的误区( exit、return、break、continue)exit退出所有脚本,是个函数return语言结构的用法---作用:终止函数的执行和从函数中返回一个值break结束当前for,foreach,while,do..while或者switch结构的执行(break可以接受一......
  • php递归遍历文件目录
    美日汇:www.hnzyxok.com手机端:www.hnzyxok.com/i递归遍历文件目录(大体的思路就是:传入一个文件名后输出遍历所有内容,等发现文件还是个文件夹的时候接着递归调用当前的遍历方法,如果不是文件夹就输出文件名)functiondakai($mulu){$mydir=dir($mulu);echo"<ul>\n";while($file......
  • php实现网站生成桌面快捷方式
    PHP生成桌面快捷方式就是这么的简单,大家生成的时候改下你要生成的网站即可dianji.html代码:<ahref="a.php?url=www.hnzyxok.com&name=美日汇">生成左面快捷方式</a>shengcheng.php代码:<?php//网站生存左面快捷方式---功能$url=$_GET['url'];$filename=urldecode($_GET['n......
  • php操作kafka
    目录一:安装libkafka扩展二:安装rdkafka扩展三:PHP代码操作链接四:rdkafka官方文档需要安装:libkafka,rdkafka扩展一:安装libkafka扩展下载去GitHub上: gitclonehttps://github.com/edenhill/librdkafka.git安装(执行命令)cdlibrdkafka/./configure&&make&&makeinstall二:安装rdka......
  • php 文件读取和写入详细介绍例子
    *************介绍PHP文件的写入和读取**************/***文件写入*///覆盖写入$filename='leyangjun.txt';$word="北京欢迎你!";$fh=fopen($filename,"w");echofwrite($fh,$word);fclose($fh);//追加写入$filename='leyangjun.txt&......
  • php 无限极分类 封装
    <?phpnamespaceApp\Services;useIlluminate\Http\Request;/***ClassPendingService*@packageApp\Service*无限分类公共类*/classLimitlessService{protected$_request;//publicfunction__construct(Request$request)//{//......
  • 关于【安全狗】在【phpstudy】中【无法找到apache服务名】的问题
      网上很多说就是在安装安全狗apache版的时候,安装程序找不到apache的服务名。   然后看了网上很多教程说就是把phpstudy的允许模式改为【系统服务】模式就行  但是我改了之后在服务里面还是没有找到apache的服务。   这里我记录下,给那些有需要的小伙伴   我......
  • JavaTPoint PHP 中文教程【翻译完成】
    在线阅读在线阅读(Gitee)ApacheCN学习资源目录PHP教程Laravel教程WordPress教程CodeIgniter教程Magento2教程Joomla教程Phalcon教程YII框架XAMPP教程贡献指南本项目需要校对,欢迎大家提交PullRequest。请您勇敢地去翻译和改进翻译。虽然我们追求卓越,但我们并不要求您做到......