fun sum1(a: Int, b: Int): Int { //一般函数表示
return a + b
}
val int2Long2 = fun(x: Int): Long { //用常量承载匿名函数方式1
return x.toLong()
}
val sum2 = { a: Int, b: Int -> a + b } //单行lambda表达式1 (Int,Int) -> Int
val printHello = { println("This is it") } //单行lambda表达式2 () -> Unit
val sum3 = { //多行lambda表达式
arg1: Int, arg2: Int ->
//参数
println("$arg1 + $arg2 = ${arg1 + arg2}") //执行过程打印消息
arg1 + arg2 //返回值
} // (Int,Int) -> Int
fun main(args: Array<String>) {
println(sum3(2,3)) //调用函数1
println(sum3.invoke(2,3)) //调用函数2(与调用函数1一致)
args.forEach(::println) //遍历方法1(最简单的表达方法)
for (x in args) { //遍历方法2
println(x)
}
args.forEach { //遍历方法3
println(it)
}
/**
* 遍历方法4,(与遍历方法3一致)
* 在forEach方法中传入lambda表达式,
* 传入参数只有一个时默认是it,也可以不写
*/
args.forEach({ it -> println(it) })
/**
* 遍历方法5
* 当最后一个参数为lambda表达式的时候,
* 可以将遍历方法4中的的()括号往前移
*/
args.forEach() { println(it) }
args.forEach {
if (it == "q") return //此时return的是main函数,之后的The End将不会输出
println(it)
}
args.forEach A@{ //给forEach起一个标签名A
if (it == "q") return@A //结束A标签此时return的是forEach函数本身,main函数不会中断
println(it)
}
println("The End")
/**
* 打印匿名函数时,有N参数就是实现了FunctionN接口, N的传入的参数个数
*/
println(int2Long2)
println(sum3)
println(::printUsage) //打印具名函数(就是普通函数)需要在函数名前加::
}
Kotlin学习笔记(十)Lambda表达式
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 1.Kotlin函数可以使用中缀表示法来调用,当满足一下条件时: 2.在Kotlin中,调用函数的时候可以使用命名...
- 终于到这一块了。对刚从我没有c++基础的人来说,这两部分是比较难懂的,下文参照的文档也比较多,这里只说出自己的理解...
- 高阶函数,又称算子(运算符)或泛函,包含多于一个箭头的函数,高阶函数是至少满足下列一个条件的函数:1.接受一个或多...