如何解决kotlin 返回类型为 nullable?.let{}
我是 Kotlin 的新手,几天前我就开始玩 android studio。这是我正在处理的课程:
class MyDialog : DialogFragment() {
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
return activity?.let {
val builder = AlertDialog.Builder(it)
builder.setMessage(R.string.exit)
builder.setPositiveButton(R.string.positive) { _: DialogInterface,_: Int -> }
builder.create()
} ?: throw Exception("problem detected with throw Exception on creating Dialog")
}
}
我不明白返回的是什么
return activity?.let {
val builder = AlertDialog.Builder(it)
builder.setMessage(R.string.exit)
builder.setPositiveButton(R.string.positive) { _: DialogInterface,_: Int -> }
builder.create()
} ?: throw Exception("problem detected with throw Exception on creating Dialog")
我知道有趣的 onCreateDialog 返回一个“Dialog”对象,因为
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog
正在返回 Dialog 类型(代码实际上有效),但我不明白在这种情况下“返回”是如何工作的,我是否返回了所有括号内容?谢谢大家!
解决方法
let
返回其中最后一个表达式的结果,在本例中为 builder.create()
的值,一个不可为 null 的 AlertDialog。
由于您使用 ?.let
,如果 activity
为 null,则不会调用 let
,您将有效地拥有 null ?: throw...
。
builder.create()
永远不会返回 null,所以这个 throw
表达式只有在 activity
为 null 时才会达到,所以错误信息没有意义。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。