L函数之所以叫匿函数,是因为L函数没有字,它比一般的函数在业务逻辑上简单得多,可以随时销毁或创建。那么使用L函数有什么用处呢?L函数既有点又有缺点,下面IT培训将从L函数的定义、语法、缺点以及使用场景,带大家好好认识一下L函数。函数表达式用法小结口语雅思培训的相关问题可以到网站了解下,我们是业内领域专业的平台,您如果有需要可以咨询,相信可以帮到您,值得您的信赖!
1、什么是L函数?
P支持一种有趣的语法,它允许你速定义单行的比较小函数。这些叫做L的函数是从L中借用来的,可以被用在任何需要函数的地方。L函数是一个可以接收任意多个参数包括可选参数,并且返回单个表达式值的匿函数。有一点要注意,L函数不能包含命令,它们所包含的表达式也不能超过一个。
例子:
,:+
0102180
2、L函数的语法
L语句中,冒号前是参数,可以有0个或多个,用逗号隔开,冒号右边是返回值。L语句构建的其是一个函数对象。
(1)参数:
=:'H'
()
#'H'
(2)有参数,默认值
=,:*
(6,7)
#42
(3)有参数,有默认值
==5,=8:*
()
#40
(5,6)
#30
(4)和,,连用
=[2,18,9,22,17,24,8,12,27]
(:%3==0,)#2
((:%3==0,))#3
#[18,9,24,12,27]
(:*2+10,)#2
((:*2+10,))#3
#[14,46,28,54,44,58,26,34,64]
#3
(,:+,)
#139
3、L函数的使用场景。
(1)函数式编程:
例如:一个整数列表,要求按照列表中元素的绝对值大小升序排列
1=[3,5,-4,-1,0,-2,-6]
(1,=:())
[0,-1,-2,3,-4,5,-6]
排序函数支持接收一个函数作为参数,该参数作为的排序依据,这里按照列表元素的绝对值进行排序。
当然,我也可以用普通函数来现:
():
()(1,=)
[0,-1,-2,3,-4,5,-6]
只不过是这种方式代码看起来不够P而已。
=,:+
(5,6)
11
(,:+)(5,6)
11
(2)P中比较常见的筛选、小刷子、合并,都可以用表达式来生成!对于序列来讲,有个函数式编程工具:()、()和()。(,):把中的值当参数逐个传给,返回一个包含函数执行结果的。如果有两个参数,(,1,2)。
#求1~20的平方
((:*,(1,21)))#P2使用(:*,(1,21))
[1,4,9,16,25,36,49,64,81,100,121,144,169,196,225,256,289,324,361,400]
(,):对中的依次执行(),将执行结果为T的组成一个LST(取决于的类型)返回。
#求1~20之间的偶数
((:%2==0,(1,21)))#P2使用(:%2==0,(1,21))
[2,4,6,8,10,12,14,16,18,20]
(,):接收的参数个数只能为2,先把中首个值和第二个值当参数传给,再把的返回值和第个值当参数传给,然后只返回一个结果。
#求1~100之和
#P3之后需要导入模块
(,:+,(1,101))
5050
#求1~100之和,再加上10000
(,:+,(1,101),10000)
15050
(3)闭包
闭包:一个定义在函数内部的函数,闭包使得变量即使脱离了该函数的作用域范围也依然能被访问到。
来看一个用函数作为闭包的例子。
():
:+2=(5)
2(15)
20
4、L函数的缺点。
点:
(1)函数比较轻便,代码简洁,不增加额外变量。即用即删除,很适合需要完成一项功能,但是此功能只在此一处使用。
(2)匿函数,一般用来给,这样的函数式编程服务;
(3)作为回调函数,传递给某些应用,比如消息处理,可以立刻传递(需变量)。
缺点:
L函数是一个可以接收任意多个参数(包括可选参数)并且返回单个表达式值的函数。和其他很多语言相比,P的L限制多多,比较严重的当属它只能由一条表达式组成。这个限制主要是为了防止滥用,因为当人们发觉很方便,就比较容易滥用,可是用多了会让程序看起来不那么清晰,毕竟每个人对于抽象层级的忍耐和理解程度都有所不同。
总之,L函数的用处有很多,因为它轻便简介的特性,使它助于减少程序的耦合度等等。想要学习了解L函数的更多内容,欢迎咨询IT培训,线上线下双重保障让学习更高效。
推荐阅读:
J培训指南:清楚J代码坏味道让代码性能更高
你真的知道J程序计数器吗程序员为何都喜欢搜集这些呢 |