匿名函数

JDK8的新特性——Lambda表达式

泪湿孤枕 提交于 2019-11-30 10:32:20
 JDK8已经发布快4年的时间了,现在来谈它的新特性显得略微的有点“不合时宜”。尽管JDK8已不再“新”,但它的重要特性之一——Lambda表达式依然是不被大部分开发者所熟练运用,甚至不被开发者所熟知。   国内的开发环境大家都知道,有各种的老项目,有各种各样的发布风险,让公司以及项目组对新的技术往往望而却步,有公司甚至时至今日还在使用JDK6来进行项目开发,这导致了在很多技术的选择上受到了很大限制,进而不能跟随时代的脚步使得项目甚至公司一步一步走向衰落。   本文简单认识JDK8的重要新特性之一——Lambda表达式。 在JDK8之前,Java是不支持函数式编程的,所谓的函数编程,即可理解是将一个函数(也称为“行为”)作为一个参数进行传递。通常我们提及得更多的是面向对象编程,面向对象编程是对数据的抽象(各种各样的POJO类),而函数式编程则是对行为的抽象(将行为作为一个参数进行传递)。在JavaScript中这是很常见的一个语法特性,但在Java中将一个函数作为参数传递这却行不通,好在JDK8的出现打破了Java的这一限制。 认识Lambda表达式    首先来引入一个示例,不知给是否有在IDEA编写代码的经历,如果在JDK8的环境下如下所示按照Java传统的语法规则编写一个线程。 1 new Thread(new Runnable() { 2 @Override 3

嵌套&匿名&高阶函数

筅森魡賤 提交于 2019-11-30 10:12:22
1、嵌套函数 name = "xu是帅哥" def func1(): name = "xu是大帅哥" def func2(): name = "xu是非常帅的" print("第三层name:", name) func2() print("第二层name:", name) func1() print("第一层name:", name) 打印结果:第三层name: xu是非常帅的 第二层name: xu是大帅哥 第一层name: xu是帅哥 由此可以看出,每个函数里面的变量都是相互独立的,变量查找顺序由里到外 2、匿名函数 calc = lambda x,y:x**y print(calc(2,5)) 打印结果:32 3、高阶函数 变量可以指向函数,函数的参数能够接收变量,那么一个函数就可以接收另一个函数作为参数。 def add(a,b): ret = a + b return ret def multiplication(c, d, func): return func(c,d) * func(c,d) print(multiplication(2, 5, add)) 打印结果:49 高阶函数满足以下任意一个条件: 1、接收一个或多个函数 2、return 返回另外一个函数 来源: https://www.cnblogs.com/zrxu/p/11578103.html

匿名函数,向量化和预分配,函数的函数,P码文件

て烟熏妆下的殇ゞ 提交于 2019-11-30 09:57:20
匿名函数: 匿名函数是不存储在程序文件中、但与数据类型是 function_handle 的变量相关的函数。匿名函数可以接受输入并返回输出,就像标准函数一样。但是,它们可能只包含一个可执行语句。 例如,创建用于计算平方数的匿名函数的句柄: sqr = @(x) x.^2; 向量化和预分配(提高程序执行速度): 向量化:要使得matlab更高速工作,把.m文件算法向量化,其他语言使用for循环,Matlab可用向量或矩阵运算。 例:原算法: x=0.01; for k=1:1001 y(k)=log10(x); x=x+0.01; end 向量化: x=0.01:0.01:1001; y=log10(x); 预分配:代码无法向量化,通过通过预分配加快for循环 例: r=zeros(1,32); for n=1:32 r(n)=rank(magic(r)); end 函数的函数: 一种以标量为变量的非线性函数,以函数名为自变量的函数,1️以函数名为自变量的函数。求零点,最优化,求积分和常微分方程。 例(简单实现hump函数功能): MATLAB中有一个内置函数是humps,该函数是下列函数的特例: 当q=0.3,r=0.9和s=6的时候就是humps函数。 a=0:0.002:1; b=humps(a); plot(a,b) function b=humps b=1./((x-.3)

匿名函数,子函数,私有函数,重载函数,eval和feval函数

徘徊边缘 提交于 2019-11-30 09:54:08
匿名函数,子函数,私有函数等函数类型 匿名函数: 匿名函数没有函数名,也不是.m文件,只包含一个表达式和输入输出参数。 Fxy=@(x,y)x.^y+3*x*y x,y为输入输入参数,Fxy为函数名 子函数: 在 Matlab中, 多个函数写入一个.m文件中。其中出现的第一个函数称为主函数,其他函数称为子函数,保存时文件名与主函数名相同,外部程序只能调用主函数。 特点: 子函数只能被同一文件下的其他函数调用 通过名称调用函数时优先调用子函数,再调用内置函数。 同一文件的主函数,子函数工作区独立,各个函数之间的信息传递通过输入输出参数实现。 Help,lookfor无法显示子函数的相关信息 function F=ex4_19(n) A=1; w=2; phi=pi/2; signal=createsig(A,w,phi); F=signal.^n; %%%%%%%%subfunction%%%%%%%%%% function signal=createsig(A,w,phi) x=0:pi/100:pi*2; signal=A*sin(w*x+phi); 私有函数和私有目录: 私有函数指位于私有目录private下的函数文件。 特点: 私有函数构造与普通函数相同。 私有函数只能被private目录下的M文件直接调用。 使用指令调用私有函数,优先级仅次于Matlab内置函数和子函数

Python匿名函数(lambda函数)

我只是一个虾纸丫 提交于 2019-11-30 06:18:04
匿名函数 —— 一行函数 lambda —— 关键字 x是普通函数的形参(位置,关键字...)可以不接收参数(x可以不写) :x是普通函数的函数值(只能返回一个数据类型)(:x返回值必须写) 1)此函数不是没有名字,他是有名字的,他的名字就叫做lambda 2)lambda 是定义匿名函数的关键字,相当于函数的def. 3)lambda 后面直接加形参,形参加多少都可以,只要用逗号隔开就行。 func = lambda a, b, *args, sex='alex', c, **kwargs: kwargs print(func(3, 4, c=666, name='alex')) 结果:{'name': 'alex'} # 所有类型的形参都可以加,但是一般使用匿名函数只是加位置参数,其他的用不到。 把匿名函数拆开写,如下 def func(a, b, *args, sex='alex', c, **kwargs): return kwargs a = func(3, 4, c=666, name='alex') print(a) 结果:{'name': 'alex'} 4)返回值在冒号之后设置,返回值和正常的函数一样,可以是任意数据类型。(但是想要返回多个元素要以容器的形式返回) 5)匿名函数不管多复杂.只能写一行.且逻辑结束后直接返回数据 格式:lambda x:x print

ES5

隐身守侯 提交于 2019-11-30 05:03:59
什么是ES5:比普通js运行要求更加严格的模式 为什么:js语言本身有很多广受诟病的缺陷 如何:在当前作用域的顶部添加:"use strict" 要求: 1、禁止给未声明的变量赋值 2、静默失败升级为错误 静默失败:执行不成功,也不报错! 3、禁用了 arguments.calee arguments.callee:在调用时,获得当前正在执行函数名,因为递归的效率极低--重复计算量太大 解决:几乎所有的递归都可以用循环代替 4、普通函数调用和匿名函数自调中的this不再指向window,而是underfine 来源: https://my.oschina.net/u/4165441/blog/3108810

好程序员web前端学习路线分享函数基础

余生长醉 提交于 2019-11-30 02:49:03
好程序员web前端培训学习路线分享函数基础,在这之前先来讲一下函数是什么? 函数就一个代码块,可以是一个完全独立与其它内容没有关系的代码块,也可以是一个与外界环境紧密相关的代码块。函数是一个拥有输入和输出的独立代码块。函数是程序中最重要的组成部分。 函数,是一种封装(将一些语句,封装到函数里面)。通过函数可以封装任意多条语句,而且可以在任何地方、任何时候调用执行。 在javascript里,函数即对象,程序可以随意操控它们。函数可以嵌套在其他函数中定义,这样它们就可以访问它们被定义时所处的作用域中的任何变量,它给javascript带来了非常强劲的编程能力。 函数的功能、好处: 1) 将会被大量重复的语句写在函数里面,这样以后需要这些语句的时候,直接调用函数,不用重写那些语句。 2) 简化编程,让编程变的模块化。 函数的声明 函数有三种声明的方法,而且有各自不同的特点。 1、普通函数声明 函数关键字 + 函数名 + (){ 语句 函数体 } 例如: function functionName(){ alert("程序员的摇篮"); // ...语句// } 注:1.函数命名跟变量一样,只能是字母、数字、下划线、美元符号,不能以数字开头。 2.后边()里放参数用的 函数名的规范: 1、普通的函数使用,名称需要驼峰式命名法,即函数是多个词组构成时,第一个单词的首字母小写

python3(十七) nonameFunc

徘徊边缘 提交于 2019-11-30 01:21:34
L = list(map(lambda x: x * x, [1, 2, 3, 4, 5, 6, 7, 8, 9])) print(L) # [1, 4, 9, 16, 25, 36, 49, 64, 81] # lambda x: x * x等价于下面的 def f(x): return x * x # 关键字lambda表示匿名函数,冒号前面的x表示函数参数。 # 匿名函数有个限制,就是只能有一个表达式,不用写return,返回值就是该表达式的结果。 # 匿名函数也是一个函数对象 fc = lambda x: x * x print(fc(5)) # 25 # 匿名函数作为返回值返回 def build(x, y): return lambda: x * x + y * y 来源: https://www.cnblogs.com/shaozhiqi/p/11543640.html

函数的介绍

假如想象 提交于 2019-11-30 01:05:26
函数和方法的区别: 在oop中,方法必须在类中,不能脱离class独立存在 FP中,函数可以独立存在的,不需要依赖于class类 对于类似Scala语言(或者Python语言)既是OOP又是FP编程 函数的定义: 函数就是讲代码块封装起来的可以实现某种功能并且可以重复使用 函数的语法:def max(x: Int, y: Int): Int = {} def 声明max为一个函数 max :表示的函数名称 (x: Int, y: Int) :表示函数的参数(两个参数,参数的类型都为Int类型) int :表示的是函数的返回值类型,在Scala中没有void数据类型,Unit表示的就是没有返回值 注意:在对函数进行定义时,可以指定函数的参数的默认值,如果不对参数进行重新赋值,就使用默认值,默认值一般都放在参数列表的最后:def sayHello(name: String, say: String = "hello"): Unit = { 函数的调用 无默认值:从前到后依次赋值 有默认值:在调用的时候指定变量 的名称进行赋值,不需要按照顺序;从前到后依次赋值,不需要指定名称(有默认值的也会被赋值) def pri(x :Int,y :Int =4,z:Int)=print(s"$x,$y,$z") pri(x =4,z =6) 函数类型:   name :String

PHP闭包Closure研究

两盒软妹~` 提交于 2019-11-30 00:59:02
一、闭包概念 接触过JavaScript朋友可能对闭包有所熟悉,因为JS中我们会经常用到闭包函数,非常方便,呐,PHP5.3也开始引入了闭包的特性。要了解闭包,我们先要知道何为匿名函数,也叫闭包函数(closures),PHP的闭包实现主要是由其完成的。 先看一个函数: $func = function(){ }; // 注意:这里带结束符 可以看到,匿名函数没有名字,如果要使用它,需要将其返回给一个变量,匿名函数像其他普通函数一样,也可以传递参数。 // 带参数的匿名函数 $func = function( $param ) { echo $param; }; $func( 'some string' ); 二、闭包的应用 <?php header("Content-Type:text/html;charset=utf-8"); class Di{ private $_factory; public function set($id,$value){ $this->_factory[$id] = $value; } public function get($id){ $value = $this->_factory[$id]; return $value(); } } class User{ private $_username; function __construct(