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

Kotlin基礎(chǔ)——枚舉、When、in、for

這篇具有很好參考價(jià)值的文章主要介紹了Kotlin基礎(chǔ)——枚舉、When、in、for。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

枚舉

聲明只有值的枚舉

enum class Color {
    RED, GREEN, BLUE
}

此外還可以增加屬性和方法,如果需要在枚舉類中定義方法,要使用分號(hào)把枚舉常量列表和方法定義分開,這也是Kotlin唯一必須使用分號(hào)的地方

enum class Color(val r: Int, val g: Int, val b: Int) {
    RED(255, 0, 0), GREEN(0, 255, 0), BLUE(0, 0, 255);

    fun rgb() = (r * 256 + g) * 256 + b
}

When

可使用多行表達(dá)式函數(shù)體

fun getRgb(color: Color) =
    when (color) {
        Color.RED -> "255,0,0"
        Color.GREEN -> "0, 255, 0"
        Color.BLUE -> "0, 0, 255"
    }

上面只會(huì)匹配對(duì)應(yīng)分支,如果需要多個(gè)值合并,則使用逗號(hào)隔開

fun getRgb(color: Color) =
    when (color) {
        Color.RED, Color.GREEN -> "255,255,0"
        Color.BLUE -> "0, 0, 255"
    }

when可以使用任何對(duì)象,如下使用set進(jìn)行判斷(不分順序)

fun getRgb(c1: Color, c2: Color) =
    when (setOf(c1, c2)) {
        setOf(Color.RED, Color.GREEN) -> "255,255,0"
        setOf(Color.GREEN, Color.BLUE) -> "0,255,255"
        else -> throw Exception("none")
    }

如果沒有給when提供參數(shù),則分支條件為布爾表達(dá)式

fun getRgb(c1: Color, c2: Color) =
    when {
        (c1 == Color.RED && c2 == Color.GREEN) || (c1 == Color.GREEN && c2 == Color.RED) -> "255,255,0"
        (c1 == Color.GREEN && c2 == Color.BLUE) || (c1 == Color.BLUE && c2 == Color.GREEN) -> "0,255,255"
        else -> throw Exception("none")
    }

使用When優(yōu)化if

對(duì)于如下類結(jié)構(gòu)

interface Expr
class Num(val value: Int) : Expr
class Sum(val left: Expr, val right: Expr) : Expr

計(jì)算加法時(shí),使用if如下,代碼塊中的最后表達(dá)式即為返回值,但不適用于函數(shù)(需要顯示return)

fun eval(e: Expr): Int =
    if (e is Num) {
        e.value
    } else if (e is Sum) {
        eval(e.left) + eval(e.right)
    } else {
        throw IllegalArgumentException("")
    }

可使用when對(duì)其進(jìn)行優(yōu)化

fun eval(e: Expr): Int =
    when (e) {
        is Num -> {
            e.value
        }
        is Sum -> {
            eval(e.left) + eval(e.right)
        }
        else -> {
            throw IllegalArgumentException("")
        }
    }

in

可使用in判斷一個(gè)值是否在一個(gè)區(qū)間/集合內(nèi),反之使用 !in

fun isNum(c: Char) = c in '0'..'9'
fun isNotNum(c: Char) = c !in '0'..'9'

println("Kotlin" in setOf("Java", "C"))

可用于when中進(jìn)行判斷

fun recognize(c: Char) = when (c) {
    in '0'..'9' -> "digit"
    in 'a'..'z' -> "letter"
    else -> "not know"
}

可用于比較任何實(shí)現(xiàn)了Comparable接口的對(duì)象,如下比較字符串將按照字母表順序

println("Kotlin" in "Java".."Z")

for

如判斷奇偶數(shù)的函數(shù)

fun isEven(i: Int) = when {
    i % 2 == 0 -> "偶數(shù)"
    else -> "奇數(shù)"
}

for循環(huán)可使用區(qū)間表示兩個(gè)值之間的間隔,如下分別表示[1,10]、[1,10)

for (i in 1..10) {
    print(i)
    print("是")
    println(isEven(i))
}

for (i in 1 until 10) {
    print(i)
    print("是")
    println(isEven(i))
}

如果需要反向,且設(shè)置步長(可為負(fù)數(shù)),可使用

for (i in 10 downTo 1 step 2) {
    print(i)
    print("是")
    println(isEven(i))
}

還可以用for遍歷集合

val chartBinary = TreeMap<Char, String>()

for (c in 'A'..'D') {
    val binary = Integer.toBinaryString(c.toInt())
    chartBinary[c] = binary;
}

for ((chat, binary) in chartBinary) {
    println("$chat = $binary")
}

如果需要跟蹤下標(biāo),可使用withIndex()文章來源地址http://www.zghlxwxcb.cn/news/detail-735232.html

val list = arrayListOf("A", "B")
for ((index, element) in list.withIndex()) {
    println("$index: $element")
}

到了這里,關(guān)于Kotlin基礎(chǔ)——枚舉、When、in、for的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(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)文章

  • kotlin之when表達(dá)式

    有java基礎(chǔ)的同學(xué)知道switch case語句 如果用kotlin來實(shí)現(xiàn),該怎么實(shí)現(xiàn)類似的業(yè)務(wù)呢? When 表達(dá)式 when 將它的參數(shù)和所有的分支條件順序比較,直到某個(gè)分支滿足條件。 發(fā)現(xiàn)kotlin的when 和java的?switch....case 差不多 但是也存在不同,畢竟kotlin說是綜合了很多的語言的優(yōu)點(diǎn)而應(yīng)運(yùn)而

    2024年02月15日
    瀏覽(21)
  • 【第一階段】kotlin的when表達(dá)式

    【第一階段】kotlin的when表達(dá)式

    1.Java 的if /when是語句 kotlin的if/when是表達(dá)式,表達(dá)式是有返回值的 java中void是個(gè),Unit在kotlin中是個(gè)類 2.當(dāng)使用when語句的時(shí)候必須有一個(gè)不滿足的值即else: 會(huì)報(bào)錯(cuò): 正確寫法: 完整代碼示例: 執(zhí)行結(jié)果

    2024年02月14日
    瀏覽(20)
  • kotlin基礎(chǔ)--快速上手kotlin語言開發(fā)

    kotlin基礎(chǔ)--快速上手kotlin語言開發(fā)

    1.1 變量 var表示可變變量,val表示不可變變量,注意并不是常量。變量名寫在前面,類型寫在后面,編譯器如果能推斷出你的類型,那么類型是不用聲明的 。 編譯器自動(dòng)推斷類型。 空安全類型編譯器報(bào)錯(cuò) 如果還是想給賦初始化值的話 注意:String和String?是兩個(gè)完全不同的類

    2024年02月15日
    瀏覽(24)
  • Kotlin開發(fā)Android之基礎(chǔ)問題記錄

    1、Kotlin中如何直接通過組件id來操作組件? 解決方案:在build.gradle中添加對(duì)相應(yīng)插件的使用即可。 2、Kotlin中Button設(shè)置背景顏色沒有效果。 解決方案:在res-values-themes.xml文件中修改如下代碼: 3、Kotlin中如何使用靜態(tài)類或者靜態(tài)方法? 解決方案: 4、Kotlin中EditText的賦值問題

    2024年02月09日
    瀏覽(91)
  • Kotlin中for循環(huán)多種用法

    可以用于迭代集合、數(shù)組、區(qū)間等。以下是一些常見的for循環(huán)用法示例: 1.區(qū)間迭代: 2.倒序迭代: 3.指定步長迭代: 4.數(shù)組迭代: 5.集合迭代: 以上是Kotlin中for循環(huán)的一些常見用法,可以根據(jù)需要選擇合適的迭代方式。

    2024年03月25日
    瀏覽(21)
  • Functional Programming in Kotlin – Creating Functional

    作者:禪與計(jì)算機(jī)程序設(shè)計(jì)藝術(shù) 在Kotlin中創(chuàng)建函數(shù)式編程并發(fā)程序是一種面向?qū)ο蟮木幊谭妒剑渲械囊恍┖诵母拍钍? immutable數(shù)據(jù)結(jié)構(gòu), 函數(shù)作為第一等公民, 協(xié)程。本文將詳細(xì)闡述如何使用Kotlin構(gòu)建函數(shù)式并發(fā)程序,涵蓋的內(nèi)容包括異步編程、并發(fā)編程、Java內(nèi)存模型與K

    2024年02月06日
    瀏覽(18)
  • Android ShapeableImageView rotation in Kotlin code

    Android官方ShapeableImageView描邊/圓形/圓角圖,xml布局實(shí)現(xiàn)-CSDN博客 文章瀏覽閱讀121次。??Android RoundedBitmapDrawable:Android官方的圓角圖形圖象實(shí)現(xiàn)方案RoundedBitmapDrawable是Android在support v4的擴(kuò)展包中新增的實(shí)現(xiàn)圓角圖形的關(guān)鍵類,借助RoundedBitmapDrawable的幫助,可以輕松的以Android標(biāo)

    2024年02月06日
    瀏覽(12)
  • Compose for iOS:kotlin 與 swift 互操作

    類似于 Android 上的 compose,在 iOS 上的 compose 同樣支持嵌套顯示 compose UI 和 swiftUI 或是 uikit 。 但是不同于 Android 原生就是使用 kotlin 作為開發(fā)語言,iOS 的開發(fā)語言是 swift 或者 object-c 。雖然大多數(shù)業(yè)務(wù)邏輯都可以直接使用 kotlin 實(shí)現(xiàn),但是有時(shí)候有些邏輯無法直接使用 kotlin 實(shí)

    2024年02月04日
    瀏覽(17)
  • Duplicate class kotlin.collections.jdk8.CollectionsJDK8Kt found in modules kotlin-stdlib-1.8.10

    原因是之前下載的版本kotlin與現(xiàn)在這個(gè)項(xiàng)目下載的版本包發(fā)生了沖突, 有重復(fù)類 解決辦法: 1. 給app指明要加載哪個(gè)包類 在build.gradle(:app)中 2. 刪除已下載的庫文件,重新下載

    2024年02月08日
    瀏覽(24)
  • Kotlin基礎(chǔ)語法

    名稱 釋義 String 字符串 char 字符 Boolean 布爾型 Int 整型 Float 單精度浮點(diǎn)型 Double 雙精度浮點(diǎn)型 List 集合 Set 無重復(fù)元素集合 Map 鍵值對(duì)集合 可讀可寫變量 可讀變量 根據(jù)定義變量時(shí)進(jìn)行初始化,系統(tǒng)可以根據(jù)初始化值自動(dòng)進(jìn)行類型推導(dǎo),進(jìn)而可以省略類型聲明 函數(shù)定義 在Kotl

    2024年02月03日
    瀏覽(20)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包