31DaysOfKotlin-series 1

原创 2018年04月16日 11:07:58

最近从网上看到Google推送的31天学习Kotlin,觉得还不错,所以特此Mark下

  1. 处理null条件?可以使用elvis operator ‘?:

    val name: String = person.name ?: "unknown"
    val age: person.age ?: return

    如果name不为null,返回name,否则返回“unknown”,如果age为null,则整个函数返回。

    另外此处若在不为时有很多的逻辑需要处理,可以考虑使用.let或者.appy

    Read More About Null Safety

  2. 格式化String?可以在variables和experssions前面添加’$’即可。对experssions求值时,使用’${experssion}’

    val language = "Kotlin"
    
    // Kotlin has 6 characters
    val text = "$language has ${language.length} characters"

    Read More About Kotlin Basic Types

  3. Android KTX在Android开发时,实现类似Kotlin自带的解构(destructuring)操作。

    // 对应的值分别是255,255,0,0,变量名可以任意命名,但是顺序分别对应是a,r,g,b
    val (alpha, red, green, blue) = Color.RED
    
    // 只取前面两个值
    val (left, top) = Rect(1, 2, 3, 4)
    
    val (x, y) = Point(100, 200)
    
    // Not from KTZ
    val (name, age) = Person("Peng", 8)

    Destructuring Declarations - Kotlin Programming Languagekotlinlang.org

  4. Kotlin使用’when’表达式代替Java中的switch语句,when可以match很多东西,如literal values,enums,ranges of numbers,你甚至可以调用arbitrary functions

    class Train(val cargo: Number?) {
       override fun toString(): String {
           return when(cargo) {
               null, 0 -> "empty"
               1 -> "tiny"
               in 2..100 -> "small"
               is Int -> "big int"
               else -> "$cargo"
           }
       }
    }

    Control Flow: if, when, for, while - Kotlin Programming Languagekotlinlang.org

  5. 对于loops,在Kotlin中经常使用range experssions和destructuring

    //循环从1到100
    for (i in 1..100) {}
    
    //循环从100到1
    for (i in 100 downTo 1) {}
    
    //循环从1到array.size,不包含until后面的数[1,array.size),每隔一个
    val array = arrayOf("a", "b", "x")
    for (i in 1 until array.size step 2){}
    
    //destructuring an array with index and element
    for ((index, element) in array.withIndex()){}
    
    //map的循环
    val map = mapOf(1 to "one", 2 to "two")
    for ((key, value) in map){}

    Destructuring Declarations - Kotlin Programming Languagekotlinlang.org

[深度探索C++对象模型](简体版)中的蛇足

 >(简体版)中的蛇足(没有此书的人请勿看)上次见到这本书是一年前(是候先生的繁体版),花了一个星期的时间读完,囫囵吞枣,不求甚解,饶是如此,也解决了我在C++方面的诸多疑惑,这次终于看到了简体版,同...
  • Viper
  • Viper
  • 2001-10-10 13:24:00
  • 3532

31DaysOfKotlin-series 3

Kotlin可以有mutable和ready-only的field,同时它的getters和setters方法默认是自动生成的,你也可以自定义。 class User { val i...
  • swust_chenpeng
  • swust_chenpeng
  • 2018-04-17 19:15:46
  • 4

31DaysOfKotlin-series 6

Google推送的31天快速了解Kotlin,这篇就是最后一个了。但我还会继续从平时的学习中分享一些有用的学习经历 1. Android KTX提供了bundle creator,可以让我们在创建b...
  • swust_chenpeng
  • swust_chenpeng
  • 2018-04-20 18:32:44
  • 6

31DaysOfKotlin-series 4

Android的KTX实现了Kotlin中的reified type parameters,这样一来,就可以不用再传递class的参数给我们的函数,比如: // the old way var a...
  • swust_chenpeng
  • swust_chenpeng
  • 2018-04-18 20:02:52
  • 5

31DaysOfKotlin-series 2

Kotlin可以有mutable和ready-only的field,同时它的getters和setters方法默认是自动生成的,你也可以自定义。 class User { val i...
  • swust_chenpeng
  • swust_chenpeng
  • 2018-04-16 13:40:41
  • 2

31DaysOfKotlin-series 5

通过Kotlin的操作符重载可以让你写kotlin变得更快,像Path,Range或者SpannableStrings允许操作符“addition”或者“substraction”等, 你可以实现自...
  • swust_chenpeng
  • swust_chenpeng
  • 2018-04-19 21:42:50
  • 4

‘1’==1和‘1’===1的区别

运行结果如下: 而 运行结果如下: 这是因为==先把两边转化成一样的类型,然后再比较;而===不转换,直接比较。...
  • hualei52
  • hualei52
  • 2014-03-30 17:44:18
  • 192

4 1 1 1 1

 http://acm.hdu.edu.cn/showproblem.php?pid=1518 #include #include int ok,vis[30],a[30]; int s...
  • shuangyueliao
  • shuangyueliao
  • 2015-01-27 22:12:18
  • 299

SQL语句 where 1=1 && where 1<>1

http://blog.csdn.net/fanyuna/article/details/5972437 where 1=1 最近看到很多sql里用到where 1=1,原来觉得这没用嘛,但是又想...
  • jqq_apple
  • jqq_apple
  • 2015-09-16 14:51:01
  • 594

P67 ( 2-17)

 共有4个站进行码分多址CDMA通信,4个站的码片序列为:  A:(-1-1-1+1+1-1+1+1)        B:(-1-1+1-1+1+1+1-1)  C:(-1+1-1+1+1+1-1-1...
  • Sabrina61
  • Sabrina61
  • 2007-11-14 19:24:00
  • 141
收藏助手
不良信息举报
您举报文章:31DaysOfKotlin-series 1
举报原因:
原因补充:

(最多只允许输入30个字)