返回介绍

动态类型

发布于 2025-03-08 18:25:16 字数 1477 浏览 0 评论 0 收藏 0

作为静态类型的语言,kotlin 任然拥有与无类型或弱类型语言的调用,比如 javaScript。为了方便使用, dynamic 应而生:

val dyn: dynamic = ...

dynamic 类型关闭了 kotlin 的类型检查:

这样的类型可以分配任意变量或者在任意的地方作为参数传递 任何值都可以分配为 dynamic 类型,或者作为参数传递给任何接受 dynamic 类型参数的函数 这样的类型不做 null 检查

dynamic 最奇特的特性就是可以在 dynamic 变量上调用任何属性或任何方法: (The most peculiar feature of dynamic is that we are allowed to call any property or function with any parameters on a dynamic variable:)

dyn.whatever(1, "foo", dyn) // 'whatever' is not defined anywhere
dyn.whatever(*array(1, 2, 3))

在 javaScript 平台上这样的代码会编译为 'as is': dyn.whatever(1) 在 kotlin 中变成了 javaScript 中的代码 (On the JavaScript platform this code will be compiled “as is”: dyn.whatever(1) in Kotlin becomes dyn.whatever(1) in the generated JavaScript code.)

动态调用可以返回 dynamic 作为结果,因此我们可以轻松实现链式调用:

dyn.foo().bar.bat(0

当给动态调用传递一个 lambda 表达式时,所有的参数默认都是 dynamic

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

更多细节参看 spec document

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文