博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Kotlin的Lambda表达式
阅读量:6497 次
发布时间:2019-06-24

本文共 1925 字,大约阅读时间需要 6 分钟。

一、什么是Lambda表达式

就是匿名函数
写法:{[参数列表] -> [函数体,最后一行是返回值]}
**举例:**val sum = {a: Int, b: Int -> a+b}

二、Lambda 的类型

()-> Unit
无参,返回值为Unit

(Int) -> Int

传人整型,返回一个整型

(String,(String) -> String)->Boolean

传入字符串、Lambda表达式,返回Boolean

三、Lambda表达式的调用

用()调用
等价于invoke()
举例:
定义一个:val sum = {a: Int,b: Int -> a+b}
调用一下:sum(2,3)
sum.invoke(2,3)

四、首先来写一个例子

//Lambda表达式,传人两个(Int,Int)-> Int val sum = {arg1: Int, arg2: Int ->    //println("$arg1 + $arg2 = ${arg1 + arg2}")    arg1 + arg2}

五、找到kotlin的Functions源码

因为是从0开始的,可以看到最多参数只能有23个

package kotlin.jvm.functions/** A function that takes 0 arguments. */public interface Function0
: Function
{ /** Invokes the function. */ public operator fun invoke(): R}/** A function that takes 1 argument. */public interface Function1
: Function
{ /** Invokes the function with the specified argument. */ public operator fun invoke(p1: P1): R}/** A function that takes 2 arguments. */public interface Function2
: Function
{ /** Invokes the function with the specified arguments. */ public operator fun invoke(p1: P1, p2: P2): R}....../** A function that takes 21 arguments. */public interface Function21
: Function
{ /** Invokes the function with the specified arguments. */ public operator fun invoke(p1: P1, p2: P2, p3: P3, p4: P4, p5: P5, p6: P6, p7: P7, p8: P8, p9: P9, p10: P10, p11: P11, p12: P12, p13: P13, p14: P14, p15: P15, p16: P16, p17: P17, p18: P18, p19: P19, p20: P20, p21: P21): R}/** A function that takes 22 arguments. */public interface Function22
: Function
{ /** Invokes the function with the specified arguments. */ public operator fun invoke(p1: P1, p2: P2, p3: P3, p4: P4, p5: P5, p6: P6, p7: P7, p8: P8, p9: P9, p10: P10, p11: P11, p12: P12, p13: P13, p14: P14, p15: P15, p16: P16, p17: P17, p18: P18, p19: P19, p20: P20, p21: P21, p22: P22): R}

六、源码位置

这里写图片描述

你可能感兴趣的文章
Redis (二)_ jedis的使用
查看>>
拜托,面试别再问我时间复杂度了!!!
查看>>
javascript推荐书籍
查看>>
如何用Python做Web开发?——Django环境配置
查看>>
1138. Postorder Traversal (25)
查看>>
Xposed: 勾住(Hook) Android应用程序对象的方法,实现AOP
查看>>
琐碎的知识库
查看>>
1053. Path of Equal Weight (30)
查看>>
数据齿轮(DataGear)数据库管理系统 v1.1.1 发布
查看>>
[MaxCompute MapReduce实践]通过简单瘦身,解决Dataworks 10M文件限制问题
查看>>
Spring相关
查看>>
微信小程序使用阿里巴巴iconfont字体图标
查看>>
Ios生产证书申请(含推送证书)
查看>>
Spark笔试
查看>>
DOM---文档对象模型(Document Object Model)的基本使用
查看>>
内存和缓存的区别
查看>>
手动建库11.2.0.4
查看>>
LeetCode 125 Valid Palindrome(有效回文)(*)
查看>>
图解5G NR帧结构
查看>>
记录Linux下的钓鱼提权思路
查看>>