欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Kotlin開發(fā)中與if等價的takeIf與takeUnless詳解

 更新時間:2023年03月31日 11:16:45   作者:須須草  
這篇文章主要介紹了Kotlin開發(fā)中與if等價的takeIf與takeUnless使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧

一、takeIf與takeUnless簡介

if差不多等價的是takeIf和takeUnless,為什么要使用這兩個關(guān)鍵字?

為了簡化代碼?。?/p>

使用if語句實現(xiàn)代碼比較繁瑣一點,但使用if語句同樣可以實現(xiàn)同樣的效果。

簡化代碼如下:

fun CheckMyTakeIf(value :Boolean):Boolean = value
fun main()
{
	//使用了takeIf簡化了代碼
	var lll :String?= name.takeIf{
	        CheckMyTakeIf(true)
	    }
	print(lll)
}

未簡化代碼如下:

fun CheckMyTakeIf(value :Boolean):Boolean = value
fun main()
{
	//未簡化代碼
	var lll :String? = null
	if(CheckMyTakeIf(true))
	    lll = name
	else
	    lll = null
	print(lll)
}

二、關(guān)鍵字takeIf

如果是括號{}內(nèi)最后一行執(zhí)行返回的是true,則返回的自身it?

如果是括號{}內(nèi)最后一行執(zhí)行返回的是false,則返回的自身null

fun CheckMyTakeIf(value :Boolean):Boolean = value
fun main()
{
    var name :String? = "你好"
    var lll = name.takeIf {
        CheckMyTakeIf(true)
        CheckMyTakeIf(false) //最后返回false,所以返回空null
    }
    println(lll)
    lll = name.takeIf{
        CheckMyTakeIf(false) 
        CheckMyTakeIf(true)  //最后返回ture,所以返回自身,自身就是name字符串
    }
    println(lll)
}

IntelliJ IDEA 2021.3.2 (Community Edition)

開發(fā)軟件運行結(jié)果:

三、關(guān)鍵字takeUnless

fun CheckMyTakeIf(value :Boolean):Boolean = value
fun main()
{
    var name :String? = "你好"
    var lll = name.takeUnless {
        CheckMyTakeIf(true)
        CheckMyTakeIf(false)
    }
    println(lll)
    lll = name.takeUnless{
        CheckMyTakeIf(false)
        CheckMyTakeIf(true)
    }
    println(lll)
}

IntelliJ IDEA 2021.3.2 (Community Edition)

開發(fā)軟件運行結(jié)果:

四、Android官方代碼低功耗藍牙代碼

private val BluetoothAdapter.isDisabled: Boolean
    get() = !isEnabled
...
// Ensures Bluetooth is available on the device and it is enabled. If not,
// displays a dialog requesting user permission to enable Bluetooth.
bluetoothAdapter?.takeIf { it.isDisabled }?.apply {
    val enableBtIntent = Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE)
    startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT)
}

上面先是弄個一個相反的變量

private val BluetoothAdapter.isDisabled: Boolean
    get() = !isEnabled

也就是說調(diào)用BluetoothAdapter.isEnabled和BluetoothAdapter.isDisabled是取反的效果

接下來就是

bluetoothAdapter?.takeIf { it.isDisabled }?.apply {
    val enableBtIntent = Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE)
    startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT)
}

這段代碼怎么看呢?從左往右

1、先是bluetoothAdapter?如果為空,右邊式子.takeIf { it.isDisabled }?.apply…就不會執(zhí)行

2、如果bluetoothAdapter?不為空,那么執(zhí)行.takeIf { it.isDisabled }?部分的代碼

3、takeIf { it.isDisabled }?為空,即it.isDisabled為false,那么右邊式子**.apply{ }**內(nèi)置函數(shù)代碼就不會執(zhí)行。

4、takeIf { it.isDisabled }?不為空,即it.isDisabled為true,就是返回自身,那么右邊式子.apply{}內(nèi)置函數(shù)代碼就執(zhí)行。

private val BluetoothAdapter.isDisabled: Boolean
    get() = !isEnabled
...
// Ensures Bluetooth is available on the device and it is enabled. If not,
// displays a dialog requesting user permission to enable Bluetooth.
bluetoothAdapter?.takeIf { it.isDisabled }?.apply {
    val enableBtIntent = Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE)
    startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT)
}

現(xiàn)在將takeIf替換成takeUnless上面一段代碼等價于下面一段代碼

bluetoothAdapter?.takeUnless { it.isEnabled }?.apply {
    val enableBtIntent = Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE)
    startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT)
}

到此這篇關(guān)于Kotlin開發(fā)中與if等價的takeIf與takeUnless詳解的文章就介紹到這了,更多相關(guān)Kotlin takeIf與takeUnless內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 什么是Android靜默拍攝 Android靜默拍攝app制作方法

    什么是Android靜默拍攝 Android靜默拍攝app制作方法

    這篇文章主要告訴大家什么是Android靜默拍攝,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • Kotlin fun函數(shù)使用方法

    Kotlin fun函數(shù)使用方法

    函數(shù)是執(zhí)行特定任務(wù)的一組相互關(guān)聯(lián)的代碼塊。函數(shù)用于將程序分解為不同的子模塊。它使代碼可重用,并使程序更易于管理,這篇文章主要介紹了Kotlin fun函數(shù)使用方法
    2022-12-12
  • Android手電筒兼容各個手機與版本

    Android手電筒兼容各個手機與版本

    這篇文章主要為大家詳細介紹了Android手電筒兼容各個手機與版本,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • Gradle屬性設(shè)置及環(huán)境變量全面教程

    Gradle屬性設(shè)置及環(huán)境變量全面教程

    這篇文章主要為大家介紹了Gradle屬性設(shè)置及環(huán)境變量的全面教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-06-06
  • Android自定義SwipeLayout仿QQ側(cè)滑條目

    Android自定義SwipeLayout仿QQ側(cè)滑條目

    這篇文章主要為大家詳細介紹了Android自定義SwipeLayout仿QQ側(cè)滑條目,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • Android編程中出現(xiàn)The connection to adb is down問題的解決方法

    Android編程中出現(xiàn)The connection to adb is down問題的解決方法

    這篇文章主要介紹了Android編程中出現(xiàn)The connection to adb is down問題的解決方法,涉及Android進程與服務(wù)的相關(guān)操作技巧,需要的朋友可以參考下
    2015-12-12
  • Android實戰(zhàn)打飛機游戲之子彈生成與碰撞以及爆炸效果(5)

    Android實戰(zhàn)打飛機游戲之子彈生成與碰撞以及爆炸效果(5)

    這篇文章主要為大家詳細介紹了Android實戰(zhàn)打飛機游戲之子彈生成與碰撞以及爆炸效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-07-07
  • Android實現(xiàn)信息彈出框

    Android實現(xiàn)信息彈出框

    這篇文章主要為大家詳細介紹了Android實現(xiàn)信息彈出框,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • Android中快速便捷的實現(xiàn)圓角按鈕方法詳解

    Android中快速便捷的實現(xiàn)圓角按鈕方法詳解

    圓角按鈕在我們現(xiàn)在的界面中常常會用到,最近在開發(fā)中就又遇到了,所以想著有沒有更快速更便捷的實現(xiàn)方法呢,所以就有了這篇文章,本文主要給大家介紹了關(guān)于Android中如何快速便捷的實現(xiàn)圓角按鈕的相關(guān)資料,需要的朋友可以參考下。
    2017-05-05
  • Android實現(xiàn)可點擊的幸運大轉(zhuǎn)盤

    Android實現(xiàn)可點擊的幸運大轉(zhuǎn)盤

    這篇文章主要為大家詳細介紹了Android實現(xiàn)可點擊的幸運大轉(zhuǎn)盤,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-02-02

最新評論