Kotlin语法摘要(一)

2017-07-25  本文已影响0人  江南_烟雨

1.Getters 和 Setters

声明一个属性的完整语法如下:

var <propertyName>: <PropertyType> [ = <property_initializer> ]
<getter>
<setter>

2.只读属性的声明语法和可变属性的声明语法相比有两点不同: 它以 val 而不是 var 开头,不允许 setter 函数:

val simple: Int? // 类型为 Int ,默认实现 getter ,但必须在构造函数中初始化
val inferredType = 1 // 类型为 Int 类型,默认实现 getter

3.备用字段

在 kotlin 中类不可以有字段。然而当使用自定义的访问器时有时候需要备用字段。出于这些原因 kotlin 使用 field 关键词提供了自动备用字段,

var counter = 0 // 初始化值会直接写入备用字段
set(value) {
if (value >= 0)
field = value
}

4.备用属性

如果你想要做一些事情但不适合这种 "隐含备用字段" 方案,你可以试着用备用属性的方式:

rivate var _table: Map<String, Int>? = null
public val table: Map<String, Int>
get() {
if (_table == null)
_table = HashMap() //参数类型是推导出来的
return _table ?: throw AssertionError("Set to null by another thread")
}

5.编译时常量

那些在编译时就能知道具体值的属性可以使用 const 修饰符标记为编译时常量. 这种属性需要同时满足以下条件:

const val SUBSYSTEM_DEPRECATED: String = "This subsystem is deprecated"
@Deprected(SUBSYSTEM_DEPRECATED) fun foo() { ... }

上一篇 下一篇

猜你喜欢

热点阅读