@furyon

Как работает safe call в Kotlin?

Привет!

Возьмем пример:
val map = HashMap<String, String>()
val str = map["str"]?.trim()?.toLowerCase()


Если я правильно понимаю, trim не может вернуть null. Однако меня заставляют использовать после него знак вопроса (?). Я думал, что как только safe call встретит null, null и будет возвращен, иначе цепочка продолжится с not null значения. Но видимо это не так.

Буду благодарен, если подскажете как на самом деле это работает, и почему после trim мне приходится юзать safe call (в каком случае это может пригодится).

Спасибо.
  • Вопрос задан
  • 268 просмотров
Решения вопроса 1
zagayevskiy
@zagayevskiy Куратор тега Kotlin
Android developer at Yandex
Нет, это не так работает.
Результат выражения x?.f() nullable, и на нём ты хочешь вызвать ещё функцию. Поэтому нужен ещё "?": x?.f()?.g()
В каком случае это может пригодиться? Вопрос непонятен, в любом случае.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы