Это происходит потому, что arguments
принадлежит Бандлу?type, это означает, что это может быть либо Bundle, либо null.
Вместо использования if для проверки, имеет ли оно значение null, как в Java, были введены операторы !!
и ?
.
Например, если вы хотите, чтобы ваш код был правильным без использования !!
, вы можете добавить:
if (arguments != null) {
arguments.putSerializable(MODE, mode)
}
Используя эти операторы, вы получаете следующую гибкость:
!!
- вы сообщаете компилятору, что значение не может быть нулевым, в противном случае оно выдаст ошибку; ?
- вам все равно, если оно не равно нулю, оно получит доступметод и может вернуть результат, в противном случае результат такого вызова будет нулевым, и никаких действий не будет сделано.