热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Kotlin中的可空变量

我有这个代码示例。varnullAbleName:String?=nullvarv=Icannotbenull//!

我有这个代码示例。

var nullAbleName: String? = null
var v = "I cannot be null"
//! v = nullAbleName // mismatch
nullAbleName = "abc"
v = nullAbleName // Now OK.

nullAbleName 是一个变量,它的值应该在运行时确定。“v”的第二次赋值可以的逻辑是什么?是不是我很幸运,因为编译器碰巧知道 nullAbleName 有值?

回答


这称为智能铸造。编译器能够看到局部变量最近被设置为显式字符串,因此它将其视为非空。您可能会注意到,IDE 对分配的颜色/突出显示有所不同,以表明它正在使用智能投射。

这仅适用于尚未被修改它们的闭包捕获的局部变量(例如,创建一个修改局部变量值的回调实例)。因此属性不适合智能转换,因为它们不是局部变量(并且可以在其他地方更改)并且在闭包中捕获的局部变量不符合条件(因为它们可以通过闭包在其他地方更改)。






推荐阅读
author-avatar
手机用户2602903715
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有