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 时才会出现,所以错误消息没有意义。
我是 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 时才会出现,所以错误消息没有意义。