未指定返回类型的Kotlin函数
在Kotlin中,如何声明具有未指定返回类型的函数?例如,如果我有一个返回整数列表的函数,但如果输入为null,它应该只返回未指定返回类型的Kotlin函数,kotlin,Kotlin,在Kotlin中,如何声明具有未指定返回类型的函数?例如,如果我有一个返回整数列表的函数,但如果输入为null,它应该只返回null,而不是列表。 如何声明一个可以返回可变列表或null的函数?您只需在类型声明末尾使用?将您的类型声明为null即可 例如,此函数采用非null的布尔值,并返回Int的MutableList或null: fun maybeGetList(input: Boolean): MutableList<Int>? = if (input) mutable
null
,而不是列表。
如何声明一个可以返回可变列表或null的函数?您只需在类型声明末尾使用
?
将您的类型声明为null即可
例如,此函数采用非null的布尔值
,并返回Int
的MutableList
或null
:
fun maybeGetList(input: Boolean): MutableList<Int>? =
if (input) mutableListOf(1) else null
fun-maybeGetList(输入:布尔):可变列表=
if(输入)mutableListOf(1)else null
科特林在这个问题上有自己的见解。托德根据你的要求给出了一个很好的答案,但如果你正在使用科特林,那么最好学会正确使用它 应该尽可能避免使用
null
,这就是为什么Kotlin甚至有空安全类型,所以它会迫使您重新思考代码,并尝试在编写代码时不要使用讨厌的?
,只要看看那个符号,它就好像在问您是否真的想这样做
现在,在您的例子中,您甚至有两个很好的选项来避免null
和编写更地道的Kotlin:
fun getList(condition: Boolean): List<Int>
= if(condition) listOf(1,2,3) else emptyList()
fun getMutableList(condition: Boolean): MutableList<Int>
= if(condition) mutableListOf(1,2,3) else mutableListOf()
您可能认为这样做会增加复杂性,但恰恰相反,使用
null
会增加更多的复杂性,因为当您返回它时,您必须在调用此方法的每个地方处理null
,这样您就封装了危险状态,而不是传播它 请记住,应该避免使用null
,尤其是在这种情况下,您可以只返回空列表。回答得好!
fun getOptionalList(condition: Boolean): Optional<List<Int>>
= if (condition) Optional.of(listOf(1, 2, 3)) else Optional.empty()