Kotlin函数

fun 函数字面量() {
    "hello"
    12
    2.5
    println("work")
    val printHello = {println("hello")}
    println(printHello)

    val prinMsg = {msg:String -> println(msg)}
    fun prinMsg(msg:String){
        println(msg)
    }

    prinMsg("kotlin 很有趣")


}

fun fibo(total:Int):Int = when(total){
    0 -> 1
    1 -> 1
    else -> fibo(total - 1) + fibo(total -2)
}

fun feibo(n: Int):Int {
    tailrec fun fiboatail(index:Int,ant:Int,act:Int):Int=
        when(index){
            0 ->  ant
            else ->fiboatail(index - 1,act, ant + act)
        }
    return fiboatail(n,1,1)
}
//applay函数
fun myApplay(){
     //apply
//    apply函数
    val task = Runnable { println("运行中") }
    Thread(task).apply { setDaemon(true) }.start()

    val task2 = Runnable { println("running") }
    val thread = Thread(task2)
    thread.setDaemon(true)
    thread.start()


//    12.apply { println(12 + 13) }


    //let函数

}

//let函数
fun myLet():Int{
    "myLet".let{
        println(it)
        return 999
    }
//    return 999
}

//with函数
fun myWith(){
    with(ArrayList<String>()){
        add("java")
        add("kotln")
        add("c++")
        println("this = " + this)
    }.let { println(it) }
}

//run函数
fun myRun(){
    ArrayList<String>().run {
        add("aaaa")
        add("bbbb")
        add("cccc")
        println(this.joinToString())

    }.let { println(it) }

}

//lazy函数
fun myLazy(){
    fun requstJson():String="{name   age   }"
    val lazyString = lazy { requstJson() }

    val stringResult = lazyString.value
}

//use函数
@RequiresApi(Build.VERSION_CODES.O)
fun myUse(){
    val input = Files.newInputStream(Paths.get("f:\\myInformation.txt"))
    val byte = input.use {
        input.read()
    }
}

//repeat函数
fun myRepeat(){
    //repeat(times: Int, action: (Int) -> Unit)
    repeat(8, {println("执行")})
}

//require函数
fun myRequire(x:Int){
    // require(value: Boolean, lazyMessage: () -> Any)
    require(x > 0,{"数字必须大于0"})
    println(x)
//    outputString()
}

//泛型函数
fun <T> outputString(a:T,b:T,c:T):String{
    return "$a,$b,$c"
}

fun test(){
    val array = arrayOf(1,3,5,-8)
    println("最大的数值是: ${array.biggest()}")
}
fun <T> Array<T>.biggest():T where T:Number, T:Comparable<T>{
    var biggest = this[0]
    for(i in 1..lastIndex){
        val e = this[i]
        if(e > biggest){
            biggest = e
        }
    }
    return biggest

}

//lambda表达式
//语法     {参数1,参数2,参数3,...参数n  ->  要执行的语句}
fun add(x:Int,y:Int):Int{
    return x + y
}

//val t = add()

var 求和 = {x:Int,y:Int -> x+y}
fun gaojie(a:Int,b:Int,c:(x:Int,y:Int)-> Int){
    c(a,b)
}
fun g(){
    gaojie(1,2, {x:Int,y:Int -> x+y})
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值