Author Archive: nex3z

Kotlin Reference: Destructuring Declarations

  有时候需要把一个对象解构(Destructure)为一系列变量,如: [code lang=”kotlin”]val (name, age) = person[/code] 上面的语法称为解构声明(Destructuring Declaration),解构声明可以一次性创建多个变量。我们声明了两个变量:name 和 age,可以单独地使用它们: [code lang=&…
Read more

Kotlin Reference: Inline Functions

  使用高阶函数会引入一定的运行时损耗:每一个函数都是一个对象,并且要获取闭包,即在函数内访问外部函数作用域的变量。(对函数对象和类的)内存分配和虚调用都会引入运行时开销。   但在很多情况下,使用内联 Lambda 表达式可以消除此种开销,下面给出的函数很好地展现了这一情况,即 lock() 函数可以很容易地在调用处内联,考虑下面的场景: [code lang=”kotlin&#82…
Read more

Kotlin Reference: Delegated Properties

  对于一些通用的属性,比起每次都在需要的时候进行手动实现,更好的方法是实现一次并把它放进库里,此类属性如: 延迟(Lazy)属性:仅在第一次访问时进行计算, 可观察(Observable)属性:属性发生变动时通知监听者, 在映射(Map)中存储属性,而不是把属性存储到单独的字段。   Kotlin 提供了委托属性(Delegated Property)来满足此种(及其他)场景: [code la…
Read more

Kotlin Reference: Delegation

  实践证明,委托模式(Delegation Pattern)是实现继承的一种有效的替代方式,Kotlin 原生支持委托模式,不需要任何样板代码。下面的代码中,Derived 类实现了接口 Base,并将其所有的公有方法委托给了一个特定的对象: [code lang=”kotlin”]interface Base { fun print() } class BaseImpl…
Read more

Kotlin Reference: Object Expressions and Declarations

  有时候我们想对一个类进行些许修改,而又不想显式地声明一个新的子类。Java 使用匿名内部类(Anonymous Inner Class)的方式应对这种场景,Kotlin 使用对象表达式(Object Expression)和对象声明(Object Declaration)进一步拓展了这个概念。 Object expressions   要创建继承了某个(或多个)其他类型的匿名内部类,可以使用如…
Read more

Kotlin Reference: Enum Classes

  枚举类最基础的应用是实现类型安全的枚举: [code lang=”kotlin”]enum class Direction { NORTH, SOUTH, WEST, EAST }[/code] 每一个枚举常量都是一个对象,每个枚举常量之间以逗号分隔。 1. Initialization   由于每一个枚举都是枚举类的实例,故而它们可以被初始化: [code lang=…
Read more

Kotlin Reference: Generics

  Kotlin 的类可以具有类型参数,就像 Java 一样: [code lang=”kotlin”]class Box(t: T) { var value = t }[/code]   一般来说,要创建这种类的实例,需要提供类型参数: [code lang=”kotlin”]val box: Box = Box(1)[/code]   但如果类型…
Read more