当前位置:嗨网首页>书籍在线阅读

35-Kotlin动态类型

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

4.9 Kotlin动态类型

作为一种静态类型的编程语言,Kotlin仍然需要与无类型或松散类型的环境进行互操作(如JavaScript生态系统)。为了配合这些使用场景,Kotlin提供了动态类型。

val dyn: dynamic =…

dynamic类型基本上关闭了Kotlin的类型检查系统,具体表现在如下几点。

  • dynamic类型的值可以赋值给任何变量或作为参数进行传递。
  • 任何值都可以赋值给dynamic类型的变量,或者传递给一个接收dynamic 作为参数的函数。
  • 动态类型禁止了null检查。

对于动态类型来说,可以直接调用dynamic变量的任何属性或调用任何函数的任意参数。代码如下。

dyn.whatever(1, "foo", dyn)     // whatever在任何地方都没有定义
dyn.whatever(*arrayOf(1, 2, 3))

在JavaScript平台上,代码总是按照原样进行编译。

动态调用总是返回一个dynamic类型作为结果,因此可以自由地按照下面这种方式进行链接调用。

dyn.foo().bar.baz()

把一个Lambda表达式传给一个动态调用函数时,该函数的所有参数默认都是dynamic类型的。

dyn.foo {
    x -> x.bar()     // x 为dynamic
}

在JavaScript平台中,使用dynamic类型值的表达式会按照原样进行转换,而且dynamic类型不使用Kotlin运算符进行约定。