В Kotlin, в чем разница между var s: String = "hello" и var s = "hello" как String? - PullRequest
0 голосов
/ 05 мая 2019

Не ясно, что такое приведение типов, но, насколько я понимаю, оно похоже на приведение типов.Это говорит мне о назначении типа, но в чем разница между этими двумя?

Иногда я даже вижу переменное приветствие: String = "hello" как String

Ответы [ 2 ]

1 голос
/ 05 мая 2019

Если вы пишете var s: String = "hello" или var s = "hello", переменная имеет, что неудивительно, тип String.

Однако это означает, что вы не можете хранить null значения в этом var, так как тип String не является «обнуляемым» в Kotlin. Тип, который допускает как String s, так и null, называется в котлине String?.

Чтобы ваши var могли принимать значения null, вы можете явно указать тип с помощью var s: String? = "hello". Но вы также можете привести "hello" к типу String?, написав val s = "hello" as String?, чтобы вывод типа обнаружил этот новый тип. По моему мнению, последняя версия не является необходимой путаницей, и я бы ее избегал, но, если честно, это редкие ситуации, когда происходит кастинг, например. String до String? удобно, когда нет такого приятного способа указать явный тип, как в вашем примере.

1 голос
/ 05 мая 2019

var s : String = "hello" - это обычное объявление изменяемой переменной, значением которой является строка.Будет ошибкой, если вы сделаете чужую ценность.Затем Var s = "hello" as String приводит приведение значения Hello к String, затем сохраняет это значение в переменной s.Я думаю, что разница между ними в порядке исполнения.В этом случае вы сначала указываете тип данных, но во втором случае ваши данные типа не ясны, а приводят значение к строке, даже если результат будет таким же

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