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)
}
参考
标签:函数,Int,Kotlin,sum,args,学习,println,fun,main 来源: https://www.cnblogs.com/strongmore/p/16324354.html