Kotlin-Lambda 表達式

package com.init.demo.test

fun main(args: Array<String>) {
    /**
     * lambda 全程lambda表達式 沒有函數名的函數 即匿名函數
     * 即函數中的函數(內部函數),基於數學中的λ演算得名
     * 也可以乘稱作閉包 是指這個匿名函數內可以引用創建
     *  這個匿名函數所屬的變量
     *  寫法:{參數1,參數2,...參數n -> //執行語句}
     */
    println(add(1,3))
    println("add()改寫成lambda表達式爲: var add = {x:Int,y:Int ->x+y}")
    var add = {x:Int,y:Int ->x+y}
    /**
     * 從而把函數變成了一個變量,這個變量的類型稱作函數類型
     * lambda表達式中不允許出現return
     */
    println(add)

    //methodLambda使用方法
    var  methodLambda = comboTwoValue(1,3,add)
    println(methodLambda)

    /**
     * comboTwoValue1()函數體現了沒有了以前的add函數名,變量名也沒了
     */
    var  methodLambda1 = comboTwoValue1(1,{x:Int,y:Int ->x+y},3)
    println(methodLambda1)
}

fun add(x:Int,y:Int):Int{
    return  x+y
}

/**
 * 用來組合兩個整數,得出一個結果
 * 計算兩個整數的步驟,交給第三個函數參數類型去解決
 * method:(a:Int,b:Int)->Int是一個函數類型
 * ->是一個函數類型定義
 */
fun comboTwoValue(x:Int,y:Int,method:(a:Int,b:Int)->Int):Int{

    return  method(x,y)
}


fun comboTwoValue1(x:Int,method:(a:Int,b:Int)->Int,y:Int):Int{

    return  method(x,y)
}

//輸出:
4
add()改寫成lambda表達式爲: var add = {x:Int,y:Int ->x+y}
(kotlin.Int, kotlin.Int) -> kotlin.Int
4
4
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章