kotlin return 可空类型?.let{}

kotlin return type of nullable?.let{}

我是 Kotlin 的新手,几天来我在 android studio 玩了一会儿。这是我正在处理的class:

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")

    }

}

我不明白什么是 returning

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 的乐趣 return 是一个“对话框”对象,因为

override fun onCreateDialog(savedInstanceState: Bundle?): Dialog 

是 return 对话框类型(代码实际上有效),但我不明白“return”在那种情况下是如何工作的,我 return正在处理所有括号内容?谢谢大家!

let returns 其中最后一个表达式的结果,在本例中为 builder.create() 的值,一个不可为 null 的 AlertDialog。

由于您使用 ?.let,如果 activity 为 null,则不会调用 let,您将有效地拥有 null ?: throw....

builder.create() 永远不会 returns null,所以这个 throw 表达式只有在 activity 为 null 时才会出现,所以错误消息没有意义。