Kotlin学习笔记之 3

作者: super_shanks | 来源:发表于2019-03-11 15:59 被阅读17次

3.条件控制

  • if 表达式

    kotlin中可以更加简便的使用 if语句进行赋值

    var i = if(a > b) 1 else 2
    
    var i2 = if(a > b) {
         print("Choose a")
         a
      } else {
          print("Choose b")
          b
      }
    
  • when的使用

    when在kotlin中,就是用来替代switch的,如下:

    when (x) {
          1,0 -> print("1 or 0")
          in 1..10 -> print("x is in the range")
          in validNumbers -> print("x is valid")
          !in 10..20 -> {
              print("x is outside the range")
          }
          else -> print("none of the above")
    }
    
    fun hasPrefix(x: Any) = when(x) {
          is String -> x.startsWith("prefix")
          else -> false
    }
    
    when {
          x.isOdd() -> print("x is odd")
          x.isEven() -> print("x is even")
          else -> print("x is funny")
    }
    

    一般和lambda结合使用,箭头左侧代表条件,箭头右侧代表返回结果,可以是代码段,可以是代码块,else就是switch中的default。上面极端代码比较易懂,基本大家看了就知道怎么回事了

  • map

    • map初始化

      一般我们使用mapOf方法进行初始化,方法中使用to关键字代表关系

      ```js
      val map = mapOf("a" to 1, "b" to 2, "c" to 3)
      ```
      
    • map遍历

      kotlin中遍历map将变得特别方便

       var map = mapOf( "1" to 2, "3" to 4)
        for((k,v) in map){
          ...  
        }
      
    • map访问

      我们直接使用["key"]的形式访问map中的元素,在kotlin中我们比较少的去使用get方法,因为它很好的帮我们做了封装,基本所有的集合类都可以直接通过[]的方式进行访问。

    • Map与MutableMap

      在java中,Map是可以putget的,但是在kotlin中,Map是只读的映射,需要修改映射我们要使用到MutableMap。而一般获得到MutableMap最容易的方式就是调用MaptoMutableMap方法。因为通过mapOf获得的方法都是Map

      这里需要着重说的一点是,如果我们直接通过系统自动的识别来认定属性的话,目前的几种封装Map都是可变Map,前面说过一般能用不可变的Map,就不用可变的集合类。

         @SinceKotlin("1.1") public actual typealias ArrayList<E> = java.util.ArrayList<E>
      @SinceKotlin("1.1") public actual typealias LinkedHashMap<K, V> = java.util.LinkedHashMap<K, V>
      @SinceKotlin("1.1") public actual typealias HashMap<K, V> = java.util.HashMap<K, V>
      @SinceKotlin("1.1") public actual typealias LinkedHashSet<E> = java.util.LinkedHashSet<E>
      @SinceKotlin("1.1") public actual typealias HashSet<E> = java.util.HashSet<E>
      

      我们看到,这几个kotlin的对象,最终都是来自于java类,当然是即可访问又可以修改啦。

相关文章

网友评论

    本文标题:Kotlin学习笔记之 3

    本文链接:https://www.haomeiwen.com/subject/htebpqtx.html