匿名函数

Java8 通关攻略

心已入冬 提交于 2020-01-15 11:11:57
点赞+收藏 就学会系列,文章收录在 GitHub JavaEgg ,N线互联网开发必备技能兵器谱 Java8早在2014年3月就发布了,还不得全面了解下 本文是用我拙劣的英文和不要脸的这抄抄那抄抄,熬出的,没有深究源码,只是对 Java8 有一个整体的认知,可以上手用起来,示例代码也都在github上 JDK 8 有什么新功能 Java 编程语言( Java Programming Language) Lambda表达式 :一个新的语言特性, 它们使您能够将函数视为方法参数,或将代码视为数据 方法引用 : 方法引用为已经有名称的方法提供易于阅读的lambda表达式 默认方法 :使用 default 关键字为接口定义默认方法(有实现的方法) 重复注解 提供了将同一注解多次应用于同一声明或类型使用的能力 类型注解 提供了在使用类型的任何地方应用注解的能力,而不仅仅是在声明上 Java8 增强了 类型推断 方法参数反射 java.util.function : 一个新的包,它包含为lambda表达式和方法引用提供目标类型的通用功能接口 集合(Collections) java.util.stream 包中新增了 Stream API ,用来支持对元素流的函数式操作 改进了有键冲突问题的 HashMap 精简运行时(Compact Profiles) 安全性(Security)

Python匿名函数

↘锁芯ラ 提交于 2020-01-12 05:18:19
匿名函数 用lambda关键词能创建小型匿名函数。这种函数得名于省略了用def声明函数的标准步骤。 lambda函数的语法只包含一个语句,如下: lambda [arg1 [,arg2,.....argn]]:expression # 如下实例: sum = lambda arg1, arg2: arg1 + arg2 # 调用sum函数 print "Value of total : ", sum( 10, 20 ) print "Value of total : ", sum( 20, 20 ) # 以上实例输出结果: Value of total : 30 Value of total : 40 Lambda函数能接收任何数量的参数但只能返回一个表达式的值 匿名函数不能直接调用print,因为lambda需要一个表达式 应用场合 函数作为参数传递 # 1. 自己定义函数 >>> def fun(a, b, opt): ... print "a =", a ... print "b =", b ... print "result =", opt(a, b) ... >>> fun(1, 2, lambda x,y:x+y) a = 1 b = 2 result = 3 # 2. 作为内置函数的参数 想一想,下面的数据如何指定按age或name排序? stus = [ {

Kotlin学习系列——Lambda表达式(2)

|▌冷眼眸甩不掉的悲伤 提交于 2020-01-11 03:45:06
上一篇文章讲到了最基本的Lambda表达式,今天这篇文章继续讲Lambda表达式中的在作用域中访问变量。 Java中的内部类访问变量 当我们在函数内部使用匿名内部类时,我们可以在匿名内部类内使用函数的参数和函数内的局部变量。当我们在使用Lambda表达式时,我们也可以访问这个函数的参数和使用那些在Lambda表达式之前定义的变量。 下面先看一个在Java中匿名内部类中访问函数参数和局部变量的例子。 public void search () { final String str = "xxxx" ; new Thread( new Runnable() { @Override public void run () { for ( int i = 0 ; i < 10 ; i++) { System.out.println(str); } } }).start(); } 1 2 3 4 5 6 7 8 9 10 11 上面的这个例子中局部变量 str 在匿名内部类中被使用,所以必须要加final修饰符。 如果你使用的JDK是Java8版本,那你会发现你不写final修饰符也是不会报错的。这因为Java8中final修饰符不是必需的,但是如果你尝试在内部类中更改str的值,IDE就会告诉你,在匿名内部类中使用的局部变量是final的,不可以被修改

8.13 匿名函数

a 夏天 提交于 2020-01-09 21:39:05
8.13 匿名函数 有名函数 基于函数名使用的函数。 def func(): pass func() 匿名函数 匿名函数,他没有绑定名字,使用一次即被收回,加括号既可以运行。 print(lambda x,y: x+y) # <function <lambda> at 0x0000028D950DC158> res = lambda x,y:x+y print(res(1,2)) # 3 与内置函数联用 匿名函数通常与max()、sorted()、filter()、sorted()方法联用。 salary_dict = { 'nick': 3000, 'jason': 100000, 'tank': 5000, 'sean': 2000 } 1.如果我们想从上述字典中取出薪资最高的人,我们可以使用max()方法,但是max()默认比较的是字典的key。 首先将可迭代对象变成迭代器对象 res=next(迭代器对象),将res当做参数传给key指定的函数,然后将该函数的返回值当做判断依据 print(max(salary_dict,key=lambda k:salary_dict[k])) # jason 2.如果我们想对上述字典中的人,按照薪资从大到小排序,可以使用sorted()方法。 sorted()工作原理: 首先将可迭代对象变成迭代器对象 res=next(迭代器对象)

匿名函数自执行

痞子三分冷 提交于 2020-01-09 18:46:59
在看bootStrap插件的时候发现这种写法 !function(){}这种写法,不解,后来看到网上的文章才知道,这是匿名函数的一种写法 1. 什么是自执行的匿名函数? 它是指形如这样的函数: (function {// code})(); 2. 疑问 为什么(function {// code})();可以被执行, 而function {// code}();却会报错? 3. 分析 (1). 首先, 要清楚两者的区别: (function {// code})是表达式, function {// code}是函数声明. (2). 其次, js"预编译"的特点: js在"预编译"阶段, 会解释函数声明, 但却会忽略表式. (3). 当js执行到function() {//code}();时, 由于function() {//code}在"预编译"阶段已经被解释过, js会跳过function(){//code}, 试图去执行();, 故会报错; 当js执行到(function {// code})();时, 由于(function {// code})是表达式, js会去对它求解得到返回值, 由于返回值是一 个函数, 故而遇到();时, 便会被执行. 另外, 函数转换为表达式的方法并不一定要靠分组操作符(),我们还可以用void操作符,~操作符,!操作符…… 如: !

匿名函数

不问归期 提交于 2020-01-09 05:15:52
目录 一、有名函数 二、匿名函数 三、与内置函数联用 一、有名函数 我们之前定的函数都是有名函数,它是基于函数名使用。 def func(): print('from func') func() func() func() print(func) from func from func from func <function func at 0x10518b268> 二、匿名函数 匿名函数,他没有绑定名字,使用一次即被收回,加括号既可以运行。 lambda x, y: x+y <function __main__.<lambda>(x, y)> res = (lambda x, y: x+y)(1, 2) print(res) 3 三、与内置函数联用 匿名函数通常与max()、sorted()、filter()、sorted()方法联用。 salary_dict = { 'nick': 3000, 'jason': 100000, 'tank': 5000, 'sean': 2000 } 1.如果我们想从上述字典中取出薪资最高的人,我们可以使用max()方法,但是max()默认比较的是字典的key。 首先将可迭代对象变成迭代器对象 res=next(迭代器对象),将res当做参数传给key指定的函数,然后将该函数的返回值当做判断依据 salary_dict = { 'nick':

python匿名函数

佐手、 提交于 2020-01-09 01:57:44
目录 78匿名函数 一、有名函数 二、匿名函数 三、与内置函数联用 78匿名函数 一、有名函数 我们之前定义的函数都是有名函数,它是基于函数名使用的。 def func(): print('from func') func() func() func() print(func) #输出: from func from func from func <function func at 0x0000026B60E47048> 二、匿名函数 匿名函数。他没有绑定名字,使用一次即被收回,加括号即可以运行。 print(lambda x,y:x+y) #输出: <function <lambda> at 0x0000027D6A837048> res = (lambda x,y:x+y)(1,2) print(res) #输出: 3 三、与内置函数联用 匿名函数通常与max(),sorted(),filter(),sorted()方法联用。 如果我们想从上述字典中取出最薪资最高的人,我们可以使用max()方法,但是max()默认比较的是字典的ley。 首先将可迭代对象变成迭代器对象。 res=next(迭代器对象),将res当做参数传给key指定的函数,然后该函数的返回值当作判断依据。 salary_dict = { 'nick': 3000, 'jason': 100000, 'tank'

python——内置函数和lambda匿名函数

夙愿已清 提交于 2020-01-08 06:33:03
内置函数 接下来,我们就一起来看看python里的内置函数。截止到python版本3.6.2,现在python一共为我们提供了 68个内置函数 。它们就是python提供给你直接可以拿来使用的所有函数。这些函数有些我们已经用过了,有些我们还没用到过,还有一些是被封印了,必须等我们学了新知识才能解开封印的。那今天我们就一起来认识一下python的内置函数。这么多函数,我们该从何学起呢? Built-in Functions abs() dict() help() min() setattr() all() dir() hex() next() slice() any() divmod() id() object() sorted() ascii() enumerate() input() oct() staticmethod() bin() eval() int() open() str() bool() exec() isinstance() ord() sum() bytearray() filter() issubclass() pow() super() bytes() float() iter() print() tuple() callable() format() len() property() type() chr() frozenset() list()

python —匿名函数(lambda)

…衆ロ難τιáo~ 提交于 2020-01-07 22:27:48
匿名函数 一、定义 用lambda关键词能创建小型匿名函数,这种函数能得名与省略了用def声明函数的标准步骤。 lambda函数语法只包含一个句型,如下 lambda[arg1[arg2,arg3.........argn]]:expression 简洁,后只能接表达式 不能接复杂语法 def声明函数与匿名函数 >>> def test(a,b): return a+b >>> test(1,23) 24 >>> func = lambda x,y:x+y >>> func(1,23) 24 >>> 二、使用:作为普通函数的补充 1.动态编程中: 取决于func的要求 >>> def test1(a,b,func): result = func(a,b) return result>>> test1(21,3,lambda x,y:x*y) 63 1,test1中21传入a ,3传入b, lambda x ,y:x*y 传给了func 2,把 a传给了x,把 b 传给了y 3,表达式执行结果返回给result 2.匿名函数在列表排序中的使用 来源: https://www.cnblogs.com/yescarf/p/12163973.html

C#语法——委托,架构的血液

不问归期 提交于 2020-01-06 18:18:30
本篇文章主要介绍委托的应用。 委托是大家最常见的语法了,但会用与精通之间的差别是巨大的。 一个程序员如果不能精通委托,那么,他永远无法成为高级程序员。 所以,让我们把委托刻到血液里吧。 这样,你才能称为[Developer]。 委托的定义 什么是委托? 委托实际上是一种类型,是一种引用类型。 微软用delegate关键字来声明委托,delegate与int,string,double等关键字一样。都是声明用的。 下面先看下声明代码,这里声明了两个委托。 1 2 public delegate void TestDelegate(string message); public delegate int TestDelegate(MyType m, long num); delegate既然是关键字,和int,string一样,那么,为什么delegate后又跟了一个void或者int呢? 如果他们是同等地位的关键字,为什么可以一起使用呢? 很简单,我们把delegate后面的 【void TestDelegate(string message)】理解为一个变量,是不是就清晰明了了一些。 我们把delegate关键字理解为,是用来专门来定义这种复杂的变量的。而这种复杂的变量可以包含一个返回值和任意数目任意类型的传入参数。 有没有感觉,这个复杂的变量特别像一个函数的定义。 没错,官方定义