Как установить возвращаемый тип функции в mutableListOf в kotlin

#kotlin

Вопрос:

Я создал функцию, которая возвращает все коэффициенты целого числа. Но проблема в том, что он выдает ошибку, вместо которой указан тип возвращаемого 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 , что не определено.
Я только сегодня начал изучать Котлин, так что я полный новичок в Котлине. Пожалуйста, помогите мне с этим.

Ответ №1:

Вы, кажется, перепутали тип 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> .

Один из способов отличить их-посмотреть на первую букву. Имена типов обычно начинаются с заглавной буквы, в то время как имена функций начинаются со строчной буквы.