Kotlin 初心

目录

Kotlin官方文档

Lambda 表达式 Any. (any: Any, ...) -> Any

  • 什么是λ表达式
    在Kotlin中,没有“代码块”的说法,所有{}都是λ表达式,方法也是一种特殊的λ表达式,只不过方法可以使用return语句,而λ表达式只有内联时才可以return
    为什么说所有的{}都是λ表达式呢?λ表达式是对一段行为进行封装,那方法体、循环体不都是λ表达式吗

  • λ表达式的本质
    Kotlin中的λ表达式是一个Function对象

Kotlin 如何优雅地解决命名空间冲突:使用as关键字

Kotlin可以静态导入Java中的静态方法和静态字段,同时提供as关键字用来提供其别名,以解决命名冲突
注意as是可以别名任何的类和顶层函数和顶层变量的,所有的一切都可以重命名,简直就是C中的宏变量
as关键字同时还是强制类型转换,遵循将类型置于变量名后的原则,同时减少了代码中括号,实在是优雅的设计

  3 import logger as log
  4 import java.lang.Thread.currentThread as cth

 13 val conn = sock.accept()
 14 Thread {
 15         log.log("${ (conn.remoteSocketAddress as InetSocketAddress).let{ "${ it.address.hostAddress }:${ it.port }" } }", "${ cth().name } 新的客户端连接")
 16         conn.close()
 17 }.start()

容器Collection,持有对象

  • 可迭代对象的forEach forEachIndexed扩展方法
    forEach(lambda: (it: T) -> Unit)
    forEach(lambda: (index: Int, value: T) -> Unit)

END
posted @ 2019-10-24 23:25  develon  阅读(123)  评论(0编辑  收藏  举报