首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Smart Arrow-kt选项

Smart Arrow-kt选项
EN

Stack Overflow用户
提问于 2018-07-07 06:45:53
回答 1查看 225关注 0票数 0

我正在尝试从任何变量中强制转换一个选项,以便确定该选项是否为空,但是IDE表示Option<*>不能作为智能强制转换,因为它是在另一个模块中声明的。

代码语言:javascript
复制
fun hasEmptyValue(column: Pair<String, Any>): Boolean = when {
    column.second is Option<*> -> column.second.isEmpty()  
    else -> false
}
EN

回答 1

Stack Overflow用户

发布于 2018-07-07 09:25:11

以下是smartcast为我工作的原因:

代码语言:javascript
复制
fun hasEmptyValue(column: Pair<String, Any>): Boolean {
    val second = column.second
    return when (second) {
        is Option<*> -> second.isEmpty() //Smart cast to arrow.core.Option<*>
        else -> false
    }
}

关于为什么不允许跨模块进行智能转换的解释,请参阅Jetbrains问题跟踪器这里

只有当同一个属性的多个访问被保证返回相同的值时,智能强制转换才有效。如果在与访问位置不同的模块中定义了要访问的属性,则可以将包含该属性的模块与访问该属性的模块分开重新编译,从而打破智能强制转换的关键要求。因此,不允许跨模块智能转换.

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51220688

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档