kotlin_函数

Koltin

1 函数表达式

fun add(x1:Int,x2:Int):Int = x1 + x2
fun main(args : Array<String>){
    var num1 = add(3,5)
    println(num1)//8

    var num2 = {x1:Int,x2:Int -> x1+x2}
    var res = num2(2,1)
    println(res)//3

    var num3:(Int,Int)->Int = {x1,x2->x1+x2}
    var res2 = num3(5,6)
    println(res2)//11
}

2 函数引用和匿名函数

函数的优化,但是只可以是return一行不可以多行。
scala可以有多行。

可以将函数赋给另一个函数名称。

    var pdd = :: add
    println(pdd(4,5))

3 默认参数和具名参数

    set("www.baidu.com","POST")
    set("www.baidu.com")
    set(path="www.baidu.com",method="POST")
    set(path="www.baidu.com")
    set(method="POST",path="www.baidu.com")
}
//解决java中重载过多的问题
fun set(path:String,method:String = "GET"){
    println("path = ${path},  method = ${method}")
}

结果
path = www.baidu.com, method = POST
path = www.baidu.com, method = GET
path = www.baidu.com, method = POST
path = www.baidu.com, method = GET
path = www.baidu.com, method = POST

4 可变参数

kotlin中的可变参数:

fun main(args: Array<String>) {
    var a = 10
    println(add(1,2,3,4,5,6,7,8,9,10))

}
//可变数组
fun add(vararg a:Int):Int{
    var res = 0
    a.forEach {
        res += it
    }
    return res
}

java中的可变参数:

public class 可变参数Demo {
    public static void main(String[] args) {
        System.out.println(add(1,1,2,3,4,5,6,7,8,9,10));
    }
    public static int add(int...a){
        int res = 0;
        for(int i :a){
            res += i;
        }
        return res;
    }
}

5 递归函数

fun main(args: Array<String>) {
    println(digui(5))
    println(fbnq(4))
}
fun digui(num:Int):Int{
    if (num == 1){
        return  1
    }else{
        return num*digui(num-1)
    }
}
fun fbnq(num: Int):Int{
    if ( num == 1 ||num == 2){
        return 1
    }else{
        return fbnq(num - 1) + fbnq(num - 2)
    }
}

结果
120
3

6 尾递归优化

尾递归:递归中没有任何别的操作,就只有递归操作
优化:在递归函数前方加上tailrec

tailrec  fun add3(num:Int,res:Int = 0):Int{
    if(num == 1){
        return 1 +res
    }else{
        return add3(num - 1,res + num)
    }
}

尾递归优化可以将递归优化为迭代,可以进行更高的数字进行递归

发布了151 篇原创文章 · 获赞 12 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_43141726/article/details/104516719