Kotlin -----when語(yǔ)句

想給點(diǎn)擊加個(gè)條件switch語(yǔ)句,發(fā)現(xiàn)kotlin里面沒有,已經(jīng)用when語(yǔ)句替換了,那讓我們來(lái)看看when語(yǔ)句吧

class WhenTest : AppCompatActivity(),View.OnClickListener{
    override fun onClick(p0: View?) {
        /**
         * 類似switch語(yǔ)句
         */
        when(p0?.id){
            R.id.btnone -> Log.i(AUTHOR_NAME,btnone.text.toString())
            R.id.btntwo -> Log.i(AUTHOR_NAME,btntwo.text.toString())
            R.id.btnthree -> Log.i(AUTHOR_NAME,btnone.text.toString())
            //如果else
//            else -> Log.i(AUTHOR_NAME,"else text")
        }


        /**
         * 自動(dòng)轉(zhuǎn)型(Auto-casting)
         */
        when(p0){
            is TextView -> Log.i(AUTHOR_NAME,"is textView")
            is Button -> Log.i(AUTHOR_NAME,"is ButtonView")
            is View -> Log.i(AUTHOR_NAME,"is View")
            /**
             * p0是屬于View類型的,和Array無(wú)關(guān) 所以不可能走這里 但是還是可以作為條件  沒有出現(xiàn)編譯錯(cuò)誤提示
             */
            is Array<*> -> Log.i(AUTHOR_NAME,"is Array")
            else -> Log.i(AUTHOR_NAME,"is Array")
        }


        var q = 12;
        var w = "sadfa"
        var e = true
        var r = DataPerson("11",13,"1111")

        /**
         * 無(wú)自變量的when
         */
        when{
            q in 1..10 -> Log.i(AUTHOR_NAME,"qwer int text")
            w.contains("s") -> Log.i(AUTHOR_NAME,"qwer String text")
            r.age == 13 -> Log.i(AUTHOR_NAME,"qwer DataPerson text")
            e -> Log.i(AUTHOR_NAME,"qwer booelan text")
            else ->Log.i(AUTHOR_NAME,"qwer else text")
        }


    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.whentest)
        btnone.setOnClickListener(this)
        btntwo.setOnClickListener(this)
        btnthree.setOnClickListener(this)
    }
    
}

下面是點(diǎn)擊按鈕1出現(xiàn)的打印日志


when_log.png

發(fā)如果前面的條件成立,那么就直接跳出when區(qū)域,不再驗(yàn)證后面是否成立,自帶return??
無(wú)條件的when使用,還可以代替多條件的復(fù)雜if-elseif-else語(yǔ)句,那么我們來(lái)看下對(duì)比

以前寫法(個(gè)人,每個(gè)人可能寫法不同)

if (mobile.equals("")) {
                  ToastUtils.show(Login.this, "請(qǐng)輸入手機(jī)號(hào)");
                  break;
              } else if(!Common.isMobile(mobile)){
                  ToastUtils.show(Login.this, "請(qǐng)輸入正確的手機(jī)號(hào)");
                  break;
              }else if (TextUtils.isEmpty(yzmcode)) {
                  ToastUtils.show(Login.this, "請(qǐng)輸入短信驗(yàn)證碼");
                  break;
              } else if (!yzmcode.equals(get_code)) {
                  ToastUtils.show(Login.this, "短信驗(yàn)證碼錯(cuò)誤");
                  break;
              }else if(userpwd.length()<8||userpwd.length()>16){
                  makeText(Login.this,"您設(shè)置的密碼長(zhǎng)度須為8-16位,請(qǐng)重新設(shè)置", Toast.LENGTH_SHORT).show();
              }else if(!Common.isSequence(userpwd)){
                  makeText(Login.this,"您設(shè)置的密碼安全性較低,請(qǐng)重新設(shè)置",Toast.LENGTH_SHORT).show();
              }else {
                  //登錄請(qǐng)求
}

Kotlin

when{
            mobile.equals("") -> ToastUtils.show(Login.this, "請(qǐng)輸入手機(jī)號(hào)")
            !Common.isMobile(mobile) -> ToastUtils.show(Login.this, "請(qǐng)輸入正確的手機(jī)號(hào)")
            TextUtils.isEmpty(yzmcode) -> ToastUtils.show(Login.this, "請(qǐng)輸入短信驗(yàn)證碼")
            !yzmcode.equals(get_code) -> ToastUtils.show(Login.this, "短信驗(yàn)證碼錯(cuò)誤")
            userpwd.length<8||userpwd.length>16 -> ToastUtils.show(Login.this, "您設(shè)置的密碼長(zhǎng)度須為8-16位,請(qǐng)重新設(shè)置")
            !Common.isSequence(userpwd) -> ToastUtils.show(Login.this, "您設(shè)置的密碼安全性較低,請(qǐng)重新設(shè)置")
            else -> postData()
        }

至少代碼簡(jiǎn)潔了一點(diǎn)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Kotlin系統(tǒng)化學(xué)習(xí)-20170823文章中有大部分內(nèi)容是借鑒《Kotlin實(shí)戰(zhàn)》中文版,特此注明一下。 Kot...
    ChenHaHa哈哈閱讀 1,875評(píng)論 2 10
  • ¥開啟¥ 【iAPP實(shí)現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個(gè)線程,因...
    小菜c閱讀 7,334評(píng)論 0 17
  • 2016.9.9,今天開始我要找工作了,做好了簡(jiǎn)歷,想好了職業(yè)方向的人放松了很多,雖然我想要從事的職業(yè)我可能并不精...
    憶左冀飛閱讀 212評(píng)論 0 0
  • 土土沙沙 兒歌 鐘語(yǔ)和 書 2017年11月19日作 土生萬(wàn)物,沙生無(wú)物。土土沙沙,沙沙土土。土上有物,沙上無(wú)物。...
    白龍貓閱讀 329評(píng)論 0 0
  • 你奮力用夢(mèng)想來(lái)填充終將逝去的時(shí)光 嘗試著擺脫日復(fù)一日的生活 可是夢(mèng)想恰好來(lái)自于日復(fù)一日重復(fù)和堅(jiān)持 這是多么美妙的邏...
    留給未來(lái)的記憶閱讀 211評(píng)論 1 4

友情鏈接更多精彩內(nèi)容