我创建了一个函数,它返回一个整数的所有因子。但问题是,返回类型是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的初学者。请帮我解决这个问题。
发布于 2021-07-04 07:28:47
您似乎混淆了MutableList类型和函数mutableListOf。
因为类型名称是MutableList<Int>,所以您应该这样做:
fun get_factors(num: Int) : MutableList<Int> {
...
}或者,如果调用方不需要修改列表,也可以返回List<Int>:
fun get_factors(num: Int) : List<Int> {
...
}我明白为什么这会让人感到困惑--要创建一个类型的实例,通常只需将()添加到类型名的末尾,所以如果mutableListOf()创建了一个列表,您就会认为mutableListOf是类型名称。但是,这实际上是调用名为mutableListOf的全局函数,该函数返回MutableList<T>的一个实例。
区分它们的一种方法是看第一个字母。类型名称通常以大写字母开头,而函数名以小写字母开头。
https://stackoverflow.com/questions/68242536
复制相似问题