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