回调匿名函数|学习笔记

简介: 快速学习回调匿名函数

开发者学堂课程【PHP 基础入门课程(下)回调匿名函数】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/710/detail/12642


回调匿名函数


内容介绍:

一、回调匿名函数的概念

二、回调匿名函数的案例

三、回调匿名函数的证明方法

四、回调匿名函数的学习小结


一、回调匿名函数的概念

概念:指直接将匿名函数定义在函数的实参中,当做一个实参传递给形参。


二、回调匿名函数的案例

案例1:自定义求一个数组所有元素的立方

需要一个函数来完成这个需求,首先定义一个数组,这个数组对于函数来说只负责去定义每一个元素,再把每一个元素的立方把它保存起来,这里就需要一个外部的函数来完成。先定义一个函数,把一个数组传递进来,$arr 的意思是一个数组,再引用一个外部的函数,这个函数的作用是把给它的数的立方传递回来,再定义一个数组,是拿来保存函数的,这里定义的是$list=[],再定义存进来的数组,去调用之前的函数,把它求出来,调用的时候直接传入一个函数,这个时候就是一个形参。

代码如下:

//定义一个数组

$arr=[1,2,3];

//定义一个函数,能够取得所有数组的所有元素的立方

//@param $cube是一个回调函数,接收一个参数,返回参数的立方

Function my_cube($arr,$cube){

//完成要求

$list =[];

Foreach ($arr as $value){

//存起数据

//可变的,可以给予一个普通的函数

$list[]=$cube($value);

}

//返回

return $list;

}

这里的回调函数是$cube;

function cube($num){

return $num**3;

}

$res = my_cube($arr,’cube’);

Print_r($res);

结果如下:

image.png

这种方式可以但就不是匿名,解决方案

添加代码:

function cube($num){

return $num**3;

}

$cube = function($num){

Return $num ** 3;

}

$res = my_cube($arr,’$cube’);

Print_r($res);

运行结果:

image.png

效果与之前一样。


三、回调匿名函数的证明

//直接传一个匿名函数给函数,直接给一个函数

$res = my_cube($arr,function($num){return $num ** 3;})

Print_r($res);

这个跟上面的方法是一样的,这个方法把它简化了,结果是跟上面的一样的。第一个方法中完成了目标,调用了一个匿名函数当做回参传递给了一个函数,

案例:1::使用系统函数 array_map

前提摘要:系统函数时系统规定的,要求时 array_map 是一个系统函数,目标是对传入的数组的每一个元素进行相应加工,回调函数决定加工结果。首先 array_map 传入一个对应的匿名函数,再给 array_map 想要加工的一个数组$arr,实操如下:

//直接调用系统函数 参数$n 和$arr

$res = array_map(function()$n{return $n **3})

//输出$res 参数

Print_r($res);

输出的结果也是跟上面的一样,如果想要改变次方的数,把数字“3”换成想要的次方数。


四、回调匿名函数的学习小结

1.回调匿名函数就是当在函数调用时需要回调函数时,定义一个匿名函数作为实参;

2.回调匿名函数的本质也是在定义一个函数,让变量(形参)进行保存并调用;

3.回调匿名函数的作用:匿名函数用后即焚,可以释放掉占用的内存。(假设用 function cube($num){return $num**3;}这个方式实现,传 cube 的参数进去,此时系统编译后有两个参数,如果这个函数调用后自己销毁了,但是这个函数本身所占的空间在代码段中没有销毁,但如果用匿名函数传参,函数一但调用完会释放所占的内存,所以用后即焚,释放掉占用的内存这是它的优势。)

以上是关于回调匿名函数的内容。

相关文章
|
前端开发 JavaScript 测试技术
自动化测试定位方式那么多,应该选哪个?
本文介绍了移动应用自动化测试中的定位策略,包括 ID、XPath、ClassName、AccessibilityID、Name、XPath 模糊定位、Android UI Automator、iOS Predicate 等。在Web测试中,使用class name、css selector、id等定位元素。选择定位器应遵循与研发约定、优先使用特定属性及组合定位的原则。当元素定位不到时,可能因定位信息错误、元素状态等问题,可通过调整策略、等待元素加载或使用JS操作解决。特殊控件如弹框、下拉框等,需采用特定方法如JS注入或send_keys()处理。
|
jenkins Linux 网络安全
使用Jenkins通过SSH插件远程控制主机执行脚本
使用Jenkins通过SSH插件远程控制主机执行脚本
847 1
关闭阿里云的短信提醒
阿里云方便是方便,但是有太多的短信骚扰,所以可以考虑关闭一些阿里云的短信提醒 找到消息中心  如何联系我:【万里虎】www.bravetiger.cn 【QQ】3396726884 (咨询问题100元起,帮助解决问题500元起) 【博客】http://www.
2909 0
|
调度 Unix 数据库
进程,轻量级进程,内核线程,用户线程的区别关系
  在现代操作系统中,进程支持多线程。进程是资源管理的最小单元;而线程是程序执行的最小单元。一个进程的组成实体可以分为两大部分:线程集合资源集。进程中的线程是动态的对象;代表了进程指令的执行。
2667 0
|
Java 网络安全
Hutool发送邮件
Hutool发送邮件
582 0
|
Java C++ Spring
Spring 注解 @Qualifier 详解
Spring 注解 @Qualifier 详解
426 0
|
Java 开发工具
Mac下安装多个版本的JDK并随意切换
Mac下安装多个版本的JDK并随意切换
563 0
Mac下安装多个版本的JDK并随意切换
|
存储 网络协议 网络性能优化
计网体系结构(二)
计网体系结构(二)
636 0