最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Kotlin標(biāo)準(zhǔn)函數(shù)與靜態(tài)方法應(yīng)用詳解

 更新時(shí)間:2022年12月02日 14:10:00   作者:z啵唧啵唧  
Kotlin中的標(biāo)準(zhǔn)函數(shù)指的是Standard.kt文件中定義的函數(shù),任何Kotlin代碼都可以自由地調(diào)用所有的標(biāo)準(zhǔn)函數(shù)。例如let這個(gè)標(biāo)準(zhǔn)函數(shù),他的主要作用就是配合?.操作符來(lái)進(jìn)行輔助判空處理

標(biāo)準(zhǔn)函數(shù)

  • 標(biāo)準(zhǔn)函數(shù)就是在Standard.kt文件中定義的函數(shù),任何Kotlin代碼都可以自由地調(diào)用所有的標(biāo)準(zhǔn)函數(shù)
  • let函數(shù)就屬于是一個(gè)標(biāo)準(zhǔn)函數(shù),經(jīng)常配合?.操作符來(lái)進(jìn)行判空處理

with函數(shù)

with函數(shù)接收兩個(gè)參數(shù),第一參數(shù)可以是任何類型的對(duì)象,第二個(gè)參數(shù)是一個(gè)Lambda表達(dá)式

with函數(shù)會(huì)在Lambda表達(dá)式中提供第一個(gè)參數(shù)的上下文,并使用Lambda表達(dá)式的最后一行代碼作為函數(shù)的返回值

示例代碼

val res = with(obj) {
    //這里是obj對(duì)象的上下文
    "value"http://這里是with函數(shù)的返回值
}

with函數(shù)的作用.假如現(xiàn)在有個(gè)需求讓吃完所有的水果并且將結(jié)果打印出來(lái),代碼可以這樣寫

fun main() {
    doSomething()
}
fun doSomething() {
    val list = listOf<String>("Apple", "Banana", "Pear")
    val sb = StringBuilder()
    sb.append("Start eating fruits.\n")
    for (fruits in list) {
        sb.append(fruits).append("\n")
    }
    sb.append("Ate all fruits.")
    val res = sb.toString()
    println(res)
}

利用with函數(shù)可以這樣寫,可以看到在Lambda表達(dá)式中,都是StringBuilder的上下文,那么就不需要我們通過(guò)StringBuilder的實(shí)例調(diào)用append()方法了,而是直接使用append()方法即可.

fun withTest() {
    val list = listOf<String>("Apple", "Banana", "Pear")
    val res = with(StringBuilder()) {
        append("Start eating fruits.\n")
        for (fruits in list) {
            append(fruits)
            append("\n")
        }
        append("Ate all fruits.")
        toString()//最后一行就是函數(shù)的返回值
    }
    println(res)
}

run函數(shù)

  • run函數(shù)和with函數(shù)基本類似,區(qū)別就是,run函數(shù)不能直接調(diào)用,需要在某個(gè)對(duì)象的基礎(chǔ)上進(jìn)行調(diào)用
  • 其次run函數(shù)只接受一個(gè)Lambda參數(shù),并且在Lambda表達(dá)式中提供調(diào)用對(duì)象的上下文.
  • 其他和with函數(shù)都是一樣的
  • 使用run函數(shù)完成上述需求的實(shí)例
fun runTest() {
    val list = listOf<String>("Apple", "Banana", "Pear")
    //將StringBuilder調(diào)出來(lái),用來(lái)調(diào)用run函數(shù)
    val res = StringBuilder().run {
        append("Start eating fruits.\n")
        for (fruits in list) {
            append(fruits)
            append("\n")
        }
        append("Ate all fruits.")
        toString()
    }
    println(res)
}

apply函數(shù)

  • apply函數(shù)和run函數(shù)基本一樣,就是apply函數(shù)不能指定返回值,只能返回調(diào)用調(diào)用者的本身
  • apply函數(shù)實(shí)例
fun applyTest() {
    val list = listOf<String>("Apple", "Banana", "Pear")
    val res = StringBuilder().apply {
        append("Start eating fruits.\n")
        for (fruits in list) {
            append(fruits)
            append("\n")
        }
        append("Ate all fruits.")
    }
    println(res.toString())
}

靜態(tài)方法

  • 靜態(tài)方法又叫做類方法,就是說(shuō)不需要實(shí)例,直接用類就可以進(jìn)行調(diào)用,一般會(huì)將工具類中的方法設(shè)置為靜態(tài)方法,方便調(diào)用
  • 在java當(dāng)中的靜態(tài)方法就是使用static關(guān)鍵字修飾的方法
  • 但是在kotlin當(dāng)中沒有直接的靜態(tài)方法

單例類

在kotlin當(dāng)中要是想要定義一個(gè)工具類,會(huì)比較推薦單例類進(jìn)行實(shí)現(xiàn)

object Util {
    fun doAction() {
        println("do something")
    }
}

雖然單例類中的doAction()方法并不是靜態(tài)放啊,但是我們還是可以直接使用Util.doAction()來(lái)進(jìn)行調(diào)用

但是單例類的缺點(diǎn)是單例類中的方法都是類似靜態(tài)方法這種調(diào)用方式,但是我們只需要讓類中的一個(gè)方法變成靜態(tài)的怎么辦?

companion object

在companion object中定義的方法就可以類似于靜態(tài)方法那樣進(jìn)行調(diào)用了

class Util {
    //非靜態(tài)方法屬性
    fun doAction1() {
    }
    //擁有靜態(tài)方法的屬性
    companion object {
        fun doAction2() {
        }
    }
}

注解

單例類和companion object都是在語(yǔ)法形式上模仿了靜態(tài)方法,實(shí)際上不屬于真正的靜態(tài)方法

如果我們給單例類或者companion object中的方法加上@JvmStatic注解,那么kotlin編譯器就會(huì)將這些方法編譯成為真正的靜態(tài)方法

如下

class Util {
    //非靜態(tài)方法屬性
    fun doAction1() {
    }
    //擁有靜態(tài)方法的屬性
    companion object {
        @JvmStatic
        fun doAction2() {
        }
    }
}

@JvmStatic只能加在單例類或者companion object中的方法

頂層方法

  • 頂層方法指的就是沒有定義在任何類中的方法,kotlin編譯器會(huì)將所有的頂層方法編譯成為靜態(tài)方法
  • 因此只要定義了一個(gè)頂層方法,那么他肯定是一個(gè)靜態(tài)方法

到此這篇關(guān)于Kotlin標(biāo)準(zhǔn)函數(shù)與靜態(tài)方法應(yīng)用詳解的文章就介紹到這了,更多相關(guān)Kotlin標(biāo)準(zhǔn)函數(shù)與靜態(tài)方法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Flutter桌面開發(fā)windows插件開發(fā)

    Flutter桌面開發(fā)windows插件開發(fā)

    這篇文章主要為大家介紹了Flutter桌面開發(fā)windows插件開發(fā)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • Android ImageView 固定寬高比例的實(shí)現(xiàn)方法

    Android ImageView 固定寬高比例的實(shí)現(xiàn)方法

    這篇文章主要介紹了Android ImageView 固定寬高比例的實(shí)現(xiàn)方法的相關(guān)資料,,方法一:設(shè)置 adjustViewBounds="true",方法二:使用 Universal-Image-Loader 圖片緩存類,需要注意的是方法二和方法一同時(shí)使用導(dǎo)致設(shè)置無(wú)效,需要的朋友可以參考下
    2017-07-07
  • Android和JavaScript相互調(diào)用的方法

    Android和JavaScript相互調(diào)用的方法

    這篇文章主要介紹了Android和JavaScript相互調(diào)用的方法,實(shí)例分析了Android的WebView執(zhí)行JavaScript及JavaScript訪問(wèn)Android的技巧,需要的朋友可以參考下
    2015-12-12
  • Android 5.0以上Toast不顯示的解決方法

    Android 5.0以上Toast不顯示的解決方法

    最近在開發(fā)中我們經(jīng)常會(huì)在適配5.0以后的機(jī)型遇到各種各樣的問(wèn)題,其中有一個(gè)不大不小的問(wèn)題就是:Toast不顯示問(wèn)題,這篇文章就給大家總結(jié)了Android 5.0以上Toast不顯示的原因與解決方法,有需要的朋友們可以參考借鑒,下面來(lái)一起看看吧。
    2016-11-11
  • Android二維碼的生成與掃碼-zxing示例代碼

    Android二維碼的生成與掃碼-zxing示例代碼

    本篇文章主要介紹了Android二維碼的生成與掃碼-zxing示例代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-03-03
  • Android全面屏適配與判斷超詳細(xì)講解

    Android全面屏適配與判斷超詳細(xì)講解

    這篇文章主要介紹了Android 全面屏適配及判斷是否為全面屏,全面屏手勢(shì)和虛擬導(dǎo)航欄的判斷,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧
    2023-01-01
  • Android應(yīng)用中使用DOM方式解析XML格式數(shù)據(jù)的基本方法

    Android應(yīng)用中使用DOM方式解析XML格式數(shù)據(jù)的基本方法

    這篇文章主要介紹了Android應(yīng)用中使用DOM方式解析XML格式數(shù)據(jù)的基本方法,值得注意的是DOM方式解析的效率并不高,在數(shù)據(jù)量大的時(shí)候并不推薦使用,需要的朋友可以參考下
    2016-04-04
  • Android實(shí)現(xiàn)手勢(shì)滑動(dòng)多點(diǎn)觸摸放大縮小圖片效果

    Android實(shí)現(xiàn)手勢(shì)滑動(dòng)多點(diǎn)觸摸放大縮小圖片效果

    這篇文章主要介紹了Android實(shí)現(xiàn)手勢(shì)滑動(dòng)多點(diǎn)觸摸放大縮小圖片效果的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-02-02
  • Android開發(fā)實(shí)現(xiàn)仿京東商品搜索選項(xiàng)卡彈窗功能

    Android開發(fā)實(shí)現(xiàn)仿京東商品搜索選項(xiàng)卡彈窗功能

    這篇文章主要介紹了Android開發(fā)實(shí)現(xiàn)仿京東商品搜索選項(xiàng)卡彈窗功能,涉及Android布局及事件響應(yīng)相關(guān)操作技巧,需要的朋友可以參考下
    2017-11-11
  • Android編程實(shí)現(xiàn)禁止?fàn)顟B(tài)欄下拉的方法詳解

    Android編程實(shí)現(xiàn)禁止?fàn)顟B(tài)欄下拉的方法詳解

    這篇文章主要介紹了Android編程實(shí)現(xiàn)禁止?fàn)顟B(tài)欄下拉的方法,結(jié)合實(shí)例形式詳細(xì)分析了Android狀態(tài)欄操作相關(guān)的函數(shù)、屬性調(diào)用及權(quán)限控制設(shè)置技巧,需要的朋友可以參考下
    2017-08-08

最新評(píng)論

福泉市| 银川市| 徐汇区| 湾仔区| 蒙阴县| 沛县| 亚东县| 凤台县| 绵竹市| 富源县| 吴忠市| 施甸县| 来凤县| 定南县| 丹东市| 襄垣县| 寿阳县| 察雅县| 阿克苏市| 凉城县| 牟定县| 屯门区| 略阳县| 安陆市| 洞头县| 高雄市| 北安市| 富平县| 江永县| 项城市| 定日县| 东宁县| 永川市| 河西区| 鄱阳县| 龙川县| 宜都市| 颍上县| 洛宁县| 什邡市| 伊通|