Kotlin, неразрешенная ссылка на внутренние типы данных

#kotlin

#kotlin

Вопрос:

 fun main(args: Array<String>) {
    var a: int = 12
    var b: double = 1.23

    println("a:$a")
    println("b:$b")
}
 

это приводит к «неразрешенной ссылке: int» и «неразрешенной ссылке: float».
может кто-нибудь, пожалуйста, скажите мне, почему?

Комментарии:

1. Используйте заглавные буквы I и D. В Kotlin все примитивные типы данных определяются через их класс-оболочку.

2. Я потерял дар речи. Осознание собственной глупости почти повергло меня в чувство нирваны. Спасибо!

Ответ №1:

Я предполагаю, что вы исходите из Java, где int и double являются необработанными типами. В Kotlin эти типы используют версию с заглавной буквы: Int и Double соответственно. Причина этого заключается в том, что компилятор Kotlin определит во время компиляции, нужен ли вам необработанный тип или тип в штучной упаковке (объект, обертывающий необработанный тип, который также допускает возможность обнуления). Чтобы ваш код работал, вы бы просто написали:

 fun main(args: Array<String>) {
    var a: Int = 12
    var b: Double = 1.23

    println("a:$a")
    println("b:$b")
}
 

Однако, как указал ПрафулД, в этом конкретном сценарии вам не нужно указывать типы при объявлении ваших переменных, потому что Kotlin выведет типы на основе предоставленных вами значений.

Ответ №2:

Вам не нужен тип данных set. Попробуйте приведенный ниже код,

 fun main(args: Array<String>) {
    var a = 12
    var b = 1.23

    println("a:$a")
    println("b:$b")
}
 

Комментарии:

1. В этом случае вы правы, но я думаю, что объявление типа — это всегда хороший способ, например, когда у вас есть val a = getA()