如何在kotlin中将函数的返回类型设置为mutableListOf
我做了一个函数,它返回一个整数的所有因子。但问题是它给出了一个错误,即返回类型是Unit而不是mutableListOf. 我的代码:
fun get_factors(num: Int) {
var factors = mutableListOf<Int>()
for (x in 1..num) {
if (x % num == 0) {
factors.add(x)
}
}
return factors
}
fun main() {
print(get_factors(18))
}
我试着做:
fun get_factors(num: Int): mustableListOf {
var factors = mutableListOf<Int>()
for (x in 1..num) {
if (x % num == 0) {
factors.add(x)
}
}
return factors
}
fun main() {
print(get_factors(18))
}
但它说mutableListOf没有定义。我今天刚开始学习 Kotlin,所以我完全是 Kotlin 的初学者。这个你能帮我吗。
回答
您似乎混淆了类型 MutableList<Int>和功能 mutableListOf。
由于类型名称是MutableList<Int>,您应该执行以下操作:
fun get_factors(num: Int) : MutableList<Int> {
...
}
或者,如果调用者不需要修改列表,您也可以返回List<Int>:
fun get_factors(num: Int) : List<Int> {
...
}
我明白为什么这会令人困惑——要创建一个类型的实例,您通常只需添加()到类型名称的末尾,因此如果mutableListOf()创建一个列表,您会认为这mutableListOf就是类型名称。然而,这实际上是调用了全局函数 called mutableListOf,该函数返回 的实例MutableList<T>。
区分这些的一种方法是查看第一个字母。类型名称通常以大写字母开头,而函数名称以小写字母开头。