Kotlin学习之函数
2022/6/2 23:23:02
本文主要是介绍Kotlin学习之函数,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
函数定义
fun main(args: Array<String>) { println(sum(1, 2)) } //函数定义 fun sum(a: Int, b: Int): Int { return a + b }
默认参数
fun main(args: Array<String>) { println(sum()) } //包含默认参数 fun sum(a: Int = 0, b: Int = 0): Int { return a + b }
参数可以有默认值,可以减少很多重载的方法。反编译结果为
点击查看代码
public final class FirstDemoKt { public static final void main(@NotNull String[] args) { Intrinsics.checkParameterIsNotNull(args, "args"); int var1 = sum$default(0, 0, 3, (Object)null); System.out.println(var1); } public static final int sum(int a, int b) { return a + b; } // $FF: synthetic method public static int sum$default(int var0, int var1, int var2, Object var3) { if ((var2 & 1) != 0) { var0 = 0; } if ((var2 & 2) != 0) { var1 = 0; } return sum(var0, var1); } }
具名参数
fun main(args: Array<String>) { println(sum(b = 2, a = 3)) } fun sum(a: Int, b: Int): Int { return a + b }
参数不仅可以按照位置传递,也可以按照名称传递。
可变参数
fun main(args: Array<String>) { println(sum(1, 2, 3)) val nums = intArrayOf(1, 2, 3) println(sum(*nums))//解构赋值 } //包含可变参数 fun sum(vararg nums: Int): Int { var sum = 0 for (num in nums) { sum += num } return sum }
lambda表达式参数
fun main(args: Array<String>) { //第一种方式 var ret = calc(1, 2, { x, y -> x + y }) println(ret) //第二种方式 ret = calc(1, 2) { x, y -> x + y } println(ret) } //包含lambda表达式参数 fun calc(a: Int, b: Int, oper: (x: Int, y: Int) -> Int): Int { return oper(a, b) }
如果最后一个参数是lambda表达式,那么既可以在括号内传入,也可以在括号外传入。
fun main(args: Array<String>) { intArrayOf(1, 5, 9) .filter { it > 5 } .map { it * it } .forEach { println(it) } }
kotlin中数组和集合提供的很多方法都是这种格式,使用括号外传参的方式更加的友好,IDE也是优先选择这种。
内联函数
fun main(args: Array<String>) { println(sum(1, 2)) } //内联函数定义 inline fun sum(a: Int, b: Int): Int { return a + b }
内联函数表示直接将函数的方法体内容内联到调用方,相当于
fun main(args: Array<String>) { val a = 1 val b = 2 println(a + b) }
参考
Kotlin 教程
学习 Kotlin
这篇关于Kotlin学习之函数的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-01-06Kotlin委托属性(1)
- 2023-06-15Kotlin协程-那些理不清乱不明的关系
- 2023-06-08[Kotlin Tutorials 21] 协程的取消
- 2023-05-26Kotlin难点
- 2023-02-23【备战春招】第16天 Kotlin实用技巧
- 2023-02-23【备战春招】第15天 Kotlin扩展Extensions技术探秘
- 2023-02-22【备战春招】第14天 深入理解Kotlin注解
- 2023-02-21【备战春招】第12天 深入理解Kotlin类与接口
- 2023-02-21【备战春招】第13天 深入理解Kotlin泛型
- 2023-02-18【备战春招】第10天 Kotlin方法与Lambda表达式