Kotlin 条件控制

IF 表达式

一个 if 语句包含一个布尔表达式和一条或多条语句。它与在Java中的语法其实并没有什么区别。

  • 下面是一般用法

      fun ifControlStream(a:Int){
               if(a>0) {
                   print("a >0")
               }else{
                   print("a<=0")
               }
      }
    
  • 或者作为表达式

      val max = if (a > b) a else b
    

    这也说明我也不需要像Java那种有一个三元操作符,因为我们可以使用它来简单实现

  • 还可以这样

      val max = if (a > b) {
          print("Choose a")
          a
      } else {
          print("Choose b")
          b
      }
    
  • 与区间联用。基本语法一节中我们提到了区间,即in关键字。

      fun main(args: Array<String>) {
          val x = 5
          val y = 9
          if (x in 1..8) {
              println("x 在区间内")
          }
      }
    

Note:in表示的是闭合区间,上面代码中的判断语句相当于Java中的

x>=1&&x<=8

When 表达式

when 类似其他语言的 switch 操作符。用法大致有:

  • 当作语句使用

       fun whenStream(x:Int){
               when(x){
                   in 1..8 -> print("x 在1-8")
                   in 9..20 -> print("x 在9-20")
                   else->{
                       print("x 大于20")
                   }
               }
       }
    

    else 相当于是Java switch语句中的default.
    如果其他分支都不满足条件将会求值 else 分支。
    如果很多分支需要用相同的方式处理,则可以把多个分支条件放在一起,用逗号分隔:

      when (x) {
          0, 1 -> print("x == 0 or x == 1")
          else -> print("otherwise")
      }
    
  • 作为表达式

    fun hasPrefix(x: Any) = when(x) {
    is String -> x.startsWith("prefix")
    else -> false
    }

when 也可以用来取代 if-else if链。 如果不提供参数,所有的分支条件都是简单的布尔表达式,而当一个分支的条件为真时则执行该分支:

    when {
        x.isOdd() -> print("x is odd")
        x.isEven() -> print("x is even")
        else -> print("x is funny")
    }

Demo

val set = setOf<String>("mac,android,windows,iOS")
 when{
   "linux" in set -> print("linux in it ")
   "iOS" in set-> print("iOS is in os set")
 }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容