Вывод типа в лямбда-функции kotlin не работает - PullRequest
0 голосов
/ 24 января 2019

Моя лямбда:

val streetNumber: Int = {
        num: Int -> num / 4
}

Почему я получаю эту ошибку:

error: type mismatch: inferred type is (Int) -> Int but Int was expected
val streetNumber: Int = {
                        ^

Мои знания о моем блоке кода:

  1. first Int означает, что я возвращаю тип Int.
  2. 2nd Int означает, что я объявил тип num как Int.

Являются ли какие-либо из этих утверждений неправильными?

Ответы [ 3 ]

0 голосов
/ 24 января 2019

Объявление:

val streetNumber: Int

означает, что тип данных streetNumber равен Int, а не , что тип возвращаемого значения Int.Таким образом, это противоречит назначению:

val streetNumber = { num: Int -> num / 4 }

В этих случаях доверяйте предполагаемому типу данных, который (Int) -> IntПеременная streetNumber не является переменной, ссылающейся на целочисленное значение,как например: val x: Int = 0.Это переменная, ссылающаяся на лямбда-выражение , которое возвращает целочисленное значение.Вы можете использовать его так:

val streetNumber = { num: Int -> num / 4 }
val x: Int = streetNumber(12)
println(x)

, который будет печатать

3
0 голосов
/ 27 февраля 2019

Вы можете сделать это легко, как,

val streetNumber= {
    num: Int -> num / 4
}

тогда, назовите это как

val number=40
println(div(number))

это самый простой способ сделать это.

0 голосов
/ 24 января 2019

Ваш тип переменной Int неверен в этом случае, что вы хотите сделать вместо этого:

val streetNumber: (Int) -> Int = {
    num: Int -> num / 4
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...