国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Android kotlin高階函數(shù)與Java lambda表達(dá)式介紹與實(shí)戰(zhàn)

這篇具有很好參考價(jià)值的文章主要介紹了Android kotlin高階函數(shù)與Java lambda表達(dá)式介紹與實(shí)戰(zhàn)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一、介紹

????????目前在Java JDK版本的不斷升高,新的表達(dá)式已開始出現(xiàn),但是在Android混淆開發(fā)中,kotlin的語(yǔ)言與Java的語(yǔ)言是緊密貼合的。所以Java lambda表達(dá)式在kotlin中以新的身份出現(xiàn):高階函數(shù)與lambda表達(dá)式特別類似。接下來我講會(huì)先講Java的lambda,再介紹kotlin的高階函數(shù)。

二、Java lambda表達(dá)式介紹與實(shí)戰(zhàn)

2.1lambda的表達(dá)式格式介紹

 1. 不需要參數(shù),返回值為 5  
() -> 5  
  
 2. 接收一個(gè)參數(shù)(數(shù)字類型),返回其2倍的值  
x -> 2 * x  
  
 3. 接受2個(gè)參數(shù)(數(shù)字),并返回他們的差值  
(x, y) -> x – y  
  
 4. 接收2個(gè)int型整數(shù),返回他們的和  
(int x, int y) -> x + y  
  
5. 接受一個(gè) string 對(duì)象,并在控制臺(tái)打印,不返回任何值(看起來像是返回void)  
(String s) -> System.out.print(s)
大致可以分為幾類:

1.有參數(shù)無返回值(String msg)->

2.無參數(shù)有返回值()->Int

3.有參數(shù)有返回值(int a,int b)->()

2.2實(shí)戰(zhàn)

????????Java lambda表達(dá)式是通過接口定義出來,一個(gè)接口只能定義一種類型,具體邏輯需要通過Java lambda自行定義,接口只想當(dāng)一種類型

interface Add {
    int add(int a, int b); //返回值
}

上面定義了一個(gè)Add類型,

Add add = (int a, int b) -> (a + b);//什么+
Add sub = (int a, int b) -> (a - b);//申明-
Add mul = (int a, int b) -> (a * b);//申明

通過Add類型定義了三種lambda操作符。這樣就完成了

使用

1.第一種通過操作符類型自行執(zhí)行

public int operation(int a, int b, Add add) {
    return add.add(a, b);
}

2.直接調(diào)用

add.add(10, 20)

2.3實(shí)戰(zhàn)Demo

public class TestJava {


    @Test
    public void main() {
        TestJava tester = new TestJava();


        Back back = () -> 4;

        Log log = (String msg) -> com.example.lib.Log.INSTANCE.log(msg);
        //單個(gè)形參,可以不用注明變量類型
        Log log1 = msg -> com.example.lib.Log.INSTANCE.log(msg);

        Add add = (int a, int b) -> (a + b);//什么+
        Add sub = (int a, int b) -> (a - b);//申明-
        Add mul = (int a, int b) -> (a * b);//申明


        com.example.lib.Log.INSTANCE.log("back=" + back);
        log.log("我調(diào)用了Log");
        com.example.lib.Log.INSTANCE.log("add=" + add.add(10, 20));
        tester.operation(50, 10,add);
        tester.operation(50, 10,sub);


    }






    public int operation(int a, int b, Add add) {
        return add.add(a, b);
    }

    interface Back {

        int back(); //返回固定參數(shù)

    }

    interface Add {
        int add(int a, int b); //返回值


    }

    interface Log {
        void log(String msg);
    }
}

三、kotlin的高階函數(shù)定義與使用

????????通過Java的lambda的表達(dá)式學(xué)習(xí),已掌握了表達(dá)式的使用。在kotlin中,把lambda的表達(dá)式定義為高階函數(shù)。用法差不多

在kotlin中,高階函數(shù)的定義:

格式:函數(shù)名(形參類型...)->返回值

例如:add(Int ,Int)->Int,log(String)->Unit

形參只需要申明參數(shù)類型,可以支持多個(gè)或者為空。返回值,如果不需要直接些Unit

使用教程

kotlin的高階函數(shù)與Java的lambda表達(dá)式很相似,但是用法不同,高階函數(shù)是用在函數(shù)中的,作為參數(shù)使用。類似與接口回調(diào)。

實(shí)戰(zhàn):

1.定義一個(gè)加法

 fun add(a: Int, b: Int, log: (Int, Int) -> Int) {

        val data = log(a, b)
        Log.log(data)

    }

2.調(diào)用

    test.add(2, 3, { a, b ->
        Log.log("a + b=${a + b}")
        a + b
    })

    test.add(2, 4) { a, b ->

        a + b
    }
正常調(diào)用有兩種:

1.參數(shù)在方法體中(2,3,{a,b->})

2.方法外(2,4){a,b->}

注意:如果有返回值,最后一行表達(dá)式或者參數(shù)將作為函數(shù)變量返回,無需用return

引用調(diào)用兩種:

1.在函數(shù)體定義一個(gè)函數(shù)與方法中的參數(shù)函數(shù)一樣,實(shí)現(xiàn)這個(gè)函數(shù)的方法體

    fun addNum(a: Int, b: Int): Int {

        return a + b

    }

調(diào)用:

用當(dāng)前函數(shù)變量引用這個(gè)方法即可

   val addNum3 = test.add(1, 2, test::addNum)

2.在函數(shù)體外定義一個(gè)方法,kotlin支持在函數(shù)體外定義函數(shù),這個(gè)函數(shù)類似全局函數(shù),只是調(diào)用只需指向函數(shù)名,不需要當(dāng)前類。

    val addNum2 = test.add(1, 2, ::addNum)

Demo:

class Test {


    fun add(a: Int, b: Int, log: (Int, Int) -> Int) {

        val data = log(a, b)
        Log.log(data)

    }

    fun log(msg: String, show: (String) -> Unit) {
        show(msg)
    }

    fun addNum(a: Int, b: Int): Int {

        return a + b

    }

}

fun main() {
    val test = Test()
    test.add(2, 3, { a, b ->
        Log.log("a + b=${a + b}")
        a + b
    })

    test.add(2, 4) { a, b ->

        a + b
    }



    test.log("msg") {

        Log.log(it)

    }

    val addNum2 = test.add(1, 2, ::addNum)
    Log.log("addNum2=${addNum2}")

    val addNum3 = test.add(1, 2, test::addNum)
    Log.log("addNum3=${addNum3}")
}

// ::addNum 這是一種函數(shù)引用的寫法,表示將函數(shù)addNum()來作為參數(shù)傳遞給高階函數(shù)
fun addNum(a: Int, b: Int): Int {

    return a + b

}

四、總結(jié)

????????kotlin的寫法是比較特殊,高階函數(shù)類似接口返回,Java中的lambda的表達(dá)式,更像一個(gè)定義語(yǔ)言。但是語(yǔ)法接口類似,只是在使用上有所區(qū)別。

????????特別是kotlin,在大趨勢(shì)kotlin的寫法中,高階函數(shù)使用特別多,甚至一些開發(fā)者把高階當(dāng)成接口回調(diào)。新手特別注意。文章來源地址http://www.zghlxwxcb.cn/news/detail-609036.html

到了這里,關(guān)于Android kotlin高階函數(shù)與Java lambda表達(dá)式介紹與實(shí)戰(zhàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 探索Python中的函數(shù)式編程:Lambda表達(dá)式與函數(shù)式工具【第135篇—Lambda表達(dá)式】

    探索Python中的函數(shù)式編程:Lambda表達(dá)式與函數(shù)式工具【第135篇—Lambda表達(dá)式】

    前些天發(fā)現(xiàn)了一個(gè)巨牛的人工智能學(xué)習(xí)網(wǎng)站,通俗易懂,風(fēng)趣幽默,忍不住分享一下給大家。【點(diǎn)擊進(jìn)入巨牛的人工智能學(xué)習(xí)網(wǎng)站】。 在Python編程世界中,函數(shù)式編程逐漸成為了一種流行的范式,特別是在處理數(shù)據(jù)和編寫簡(jiǎn)潔、高效代碼時(shí)。函數(shù)式編程的核心思想是將計(jì)算視

    2024年04月08日
    瀏覽(33)
  • 【C++】STL 算法 ② ( foreach 循環(huán)中傳入 函數(shù)對(duì)象 / Lambda 表達(dá)式處理元素 | foreach 循環(huán)算法 | Lambda 表達(dá)式 - 匿名 函數(shù)對(duì)象 / 仿函數(shù) )

    【C++】STL 算法 ② ( foreach 循環(huán)中傳入 函數(shù)對(duì)象 / Lambda 表達(dá)式處理元素 | foreach 循環(huán)算法 | Lambda 表達(dá)式 - 匿名 函數(shù)對(duì)象 / 仿函數(shù) )

    在 C++ 語(yǔ)言中 , std::foreach 循環(huán) 雖然 不是標(biāo)準(zhǔn)庫(kù)的一部分 , 但是 C ++ 編譯器 提供了對(duì) 該語(yǔ)法 的支持作為擴(kuò)展 ; 使用 該 std::foreach 循環(huán) , 可以用于 遍歷 STL 標(biāo)準(zhǔn)模板庫(kù) 中提供的容器 , 如 vector 單端數(shù)組 , list 雙向鏈表 , map 映射 , set 集合 等 容器 中的元素 ; std::for_each 是一個(gè)算

    2024年02月02日
    瀏覽(45)
  • C++的lambda表達(dá)式(匿名函數(shù))

    從C++11開始,C++也支持使用lambda表達(dá)式(匿名函數(shù))。Lambda表達(dá)式是一種便捷的方式,可以定義一個(gè)函數(shù)對(duì)象,而無需使用顯式的函數(shù)對(duì)象類型或函數(shù)指針語(yǔ)法。 C++中的 lambda表達(dá)式的基本語(yǔ)法如下: 其中各個(gè)部分的含義如下: capture list :用于指定所捕獲的外部變量列表???/p>

    2024年02月08日
    瀏覽(48)
  • 進(jìn)階JAVA篇- Lambda 表達(dá)式與 Lambda 表達(dá)式的省略規(guī)則

    進(jìn)階JAVA篇- Lambda 表達(dá)式與 Lambda 表達(dá)式的省略規(guī)則

    目錄 ? ? ? ? 1.0 什么是 Lambda 表達(dá)式? ? ? ? ? 1.1 既然跟匿名內(nèi)部類相關(guān),先來回顧匿名內(nèi)部類。 ? ? ? ? ?1.2 Lambda 表達(dá)式與匿名內(nèi)部類之間的關(guān)系。 ? ? ? ? 1.3 函數(shù)式接口 ? ? ? ? 1.4 在具體代碼中來操作一下 ? ? ? ? 2.0?Lambda 表達(dá)式省略規(guī)則 ??????? ?Lambda 表達(dá)

    2024年02月08日
    瀏覽(29)
  • Lambda表達(dá)式 & 函數(shù)式接口 & Stream流

    Lambda表達(dá)式 & 函數(shù)式接口 & Stream流

    目錄 一.?Lambda表達(dá)式 1. 函數(shù)式編程思想概述 2.?Lambda的優(yōu)化 3. Lambda的格式 標(biāo)準(zhǔn)格式: 參數(shù)和返回值: 省略格式: 4.?Lambda的前提條件 ?二. 函數(shù)式接口 1.?概述 格式 FunctionalInterface注解 2.?常用函數(shù)式接口 Supplier接口 Consumer接口 Function接口 Predicate接口 三. Stream流 1 引言 2.?流式思

    2024年02月08日
    瀏覽(25)
  • 第六章(7):Python中的函數(shù)—lambda表達(dá)式

    是一種匿名函數(shù)的定義方式,它可以替代函數(shù)定義的方式,使代碼更加簡(jiǎn)潔和易讀。Lambda表達(dá)式的語(yǔ)法形式為:lambda 參數(shù)列表: 表達(dá)式,其中參數(shù)列表和表達(dá)式都是可選的,但是在大多數(shù)情況下都需要用到它們。Lambda表達(dá)式通常被用在需要傳遞函數(shù)對(duì)象作為參數(shù)的函數(shù)中,也

    2024年02月08日
    瀏覽(26)
  • C++結(jié)合Lambda表達(dá)式在函數(shù)內(nèi)部實(shí)現(xiàn)遞歸

    C++結(jié)合Lambda表達(dá)式在函數(shù)內(nèi)部實(shí)現(xiàn)遞歸

    529. 掃雷游戲 已解答 中等 相關(guān)標(biāo)簽 相關(guān)企業(yè) 讓我們一起來玩掃雷游戲! 給你一個(gè)大小為? m x n ?二維字符矩陣? board ?,表示掃雷游戲的盤面,其中: \\\'M\\\' ?代表一個(gè)? 未挖出的 ?地雷, \\\'E\\\' ?代表一個(gè) ?未挖出的? 空方塊, \\\'B\\\' ? 代表沒有相鄰(上,下,左,右,和所有4個(gè)

    2024年02月21日
    瀏覽(20)
  • C++ lambda表達(dá)式函數(shù)遞歸調(diào)用簡(jiǎn)單寫法實(shí)現(xiàn)

    在C++11中,lambda表達(dá)式函數(shù)遞歸往往會(huì)帶上 functional 頭文件。書寫形式如下: 還有相對(duì)簡(jiǎn)單點(diǎn)的第二種寫法(C++14): 對(duì)于第二種, auto fib 的作用是為了在 lambda 表達(dá)式內(nèi)部能夠遞歸調(diào)用自身。在 C++14 中,lambda 表達(dá)式默認(rèn)是無法直接遞歸調(diào)用的,因?yàn)樵?lambda 內(nèi)部無法訪問到

    2024年02月15日
    瀏覽(29)
  • Java- Lambda表達(dá)式

    目錄 一、Lambda簡(jiǎn)介 二、Lambda使用前提 三、Lambda語(yǔ)法 1.操作符 a.\\\"-\\\" ?b.\\\"::\\\" 2.格式? a.無參數(shù) b.有參數(shù) 四、Lambda演化過程 五、Lambda實(shí)現(xiàn)排序 Lambda 表達(dá)式,也可稱為閉包,它是推動(dòng) Java 8 發(fā)布的最重要新特性。Lambda 允許把函數(shù)作為一個(gè)方法的參數(shù)(函數(shù)作為參數(shù)傳遞進(jìn)方法中)

    2024年02月03日
    瀏覽(28)
  • Java Lambda表達(dá)式

    1.1 函數(shù)式編程思想概括 在數(shù)學(xué)中,函數(shù)就是有輸入量、輸出量的一套計(jì)算方案,也就是“拿數(shù)據(jù)做操作” 面向?qū)ο笏枷霃?qiáng)調(diào)“必須通過對(duì)象的形式來做事情” 函數(shù)式思想則盡量忽略面

    2024年02月07日
    瀏覽(42)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包