Зачем мне назначать тип данных переменных в Kotlin, если при присвоении ему значений изначально он способен выводить тип данных переменной - PullRequest
0 голосов
/ 24 апреля 2019

Как указано в приведенном коде.Мой вопрос заключается в том, есть ли какое-либо преимущество, если упомянуть тип данных на раннем этапе, когда я просто даю переменной значение.Как сказано в строке 2, он может понять, что это тип int.

val a: Int = 1  // immediate assignment
val b = 2   // `Int` type is inferred
val c: Int  // Type required when no initializer is provided.

1 Ответ

1 голос
/ 24 апреля 2019

Несколько причин, по которым вы можете явно указать тип:

  • Вам нужен супертип значения (возможно, чтобы вы могли переназначить его позже), например ::

    var myList: List<String> = ArrayList<String>()

  • Вы хотите защитить от изменений в другом коде (особенно если он находится вне вашего контроля), например ::

    val x: MustBeThisType = SomeLibrary.getValue()

    (Это даст ошибку, если SomeLibrary.getValue() когда-либо изменится на что-то, отличное от MustBeThisType или подтипа.)

  • Вы хотите избежать явного преобразования чисел, например ::

    val x: Long = 2

    вместо:

    val x = 2.toLong()

  • Вы хотите, чтобы кто-то читал ваш код очень четко (особенно, если этого нет в IDE).

  • Как говорит Майкл, вам может понадобиться указать обнуляемость типов, возвращаемых из Java, например ::1010

    val x: String = someJavaClass.getAString() // Never returns null

Ничего из этого не особенно распространено в моем опыте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...