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