作为一名Android开发人员,一直都使用Java语言进行App开发。不过在Google I/O 2017中,Google 宣布 Kotlin 成为 Android 官方开发语言之后,关于是否需要将项目由Java转Kotlin的讨论就没有停止过。开始那两年,由于担心新语言的适用性和解决项目报错的时间和精力成本,所以一直处于观望状态。如今,Koltin在Google的不管更新和完善之下,逐渐趋于成熟,而且相关教程也越来越多,其实早就可以转换语言了。 在用新语言开发的过程中,发现Kotlin的许多不一样的语法和关键字,经常是一边开发一边查找,非常影响开发效率,所以就把Kotlin官方文档稍加整理记录,方便查看。
硬关键字
以下符号会始终解释为关键字,不能?作标识符:
-
as
-
as?
-
break
-
class
-
continue
-
do
- 开始?个 do/while 循环(后置条件的循环)
-
else
- 定义?个 if 表达式条件为 false 时执?的分?
-
false
-
for
-
fun
-
if
-
in
- 指定在 for 循环中迭代的对象
- ?作中缀操作符以检测?个值属于?个区间、 ?个集合或者其他定义“contains”?法的实体
- 在 when 表达式中?于上述?的
- 将?个类型参数标记为逆变
-
!in
- ?作中缀操作符以检测?个值不属于?个区间、 ?个集合或者其他定义“contains”?法的实体
- 在 when 表达式中?于上述?的
-
interface
-
is
- 检测?个值具有指定类型
- 在 when 表达式中?于上述?的
-
!is
- 检测?个值不具有指定类型
- 在 when 表达式中?于上述?的
-
null
-
object
-
package
-
return
-
super
- 引??个?法或属性的超类实现
- 在次构造函数中调?超类构造函数
-
this
- 引?当前接收者
- 在次构造函数中调?同?个类的另?个构造函数
-
throw
-
true
-
try
-
typealias
-
typeof
-
val
-
var
-
when
- 开始?个 when 表达式(执?其中?个给定分?)
-
while
软关键字
以下符号在适?的上下?中充当关键字,?在其他上下?中可?作标识符:
-
by
- 将接?的实现委托给另?个对象
- 将属性访问器的实现委托给另?个对象
-
catch
-
constructor
-
delegate
-
dynamic
-
field
-
file
-
finally
-
get
-
import
-
init
-
param
-
property
-
receiver
-
set
-
setparam
-
where
修饰符关键字
以下符号作为声明中修饰符列表中的关键字,并可?作其他上下?中的标识符:
-
actual
-
abstract
-
annotation
-
companion
-
const
-
crossinline
- 禁?传递给内联函数的 lambda 中的?局部返回
-
data
-
enum
-
expect
- 将?个声明标记为平台相关,并期待在平台模块中实现。
-
external
- 将?个声明标记为不是在 Kotlin 中实现(通过 JNI 访问或者在 JavaScript 中实现)
-
final
-
infix
-
inline
- 告诉编译器在调?处内联传给它的函数和 lambda 表达式
-
inner
-
internal
-
lateinit
-
noinline
-
open
-
operator
-
out
-
override
-
private
-
protected
-
public
-
reified
-
sealed
-
suspend
- 将?个函数或 lambda 表达式标记为挂起式(可?做协程)
-
tailrec
- 将?个函数标记为尾递归(允许编译器将递归替换为迭代)
-
vararg
- 允许?个参数传?可变数量的参数
###特殊标识符 ####以下标识符由编译器在指定上下?中定义,并且可以?作其他上下?中的常规标识符: -
field
-
it
操作符和特殊符号
Kotlin ?持以下操作符和特殊符号:
-
+ 、 - 、 * 、 / 、 %
-
*
-
=
-
+= 、 -= 、 *= 、 /= 、 %=
-
++ 、 –
-
&& 、 || 、 !
- 逻辑“与”、“或”、“?”操作符(对于位运算,请使?相应的中缀函数)
-
== 、 !=
- 相等操作符(对于?原?类型会翻译为调? equals() )
-
=== 、 !==
-
< 、 > 、 <= 、 >=
- ?较操作符(对于?原?类型会翻译为调? compareTo() )
-
[ 、 ]
- 索引访问操作符(会翻译为调? get 与 set )
-
!!
-
?.
- 执?安全调?(如果接收者?空,就调??个?法或访问?个属性)
-
?:
- 如果左侧的值为空,就取右侧的值(elvis 操作符)
-
::
-
…
-
:
-
?
-
->
- 分隔 lambda 表达式的参数与主体
- 分隔在函数类型中的参数类型与返回类型声明
- 分隔 when 表达式分?的条件与代码体
-
@
- 引??个注解
- 引?或引??个循环标签
- 引?或引??个 lambda 表达式标签
- 引??个来?外部作?域的 “this”表达式
- 引??个外部超类
-
;
-
$
-
_
- 在 lambda 表达式中代替未使?的参数
- 在解构声明中代替未使?的参数
|