но данные явно становятся List<Bitmap>
после нулевой проверки
Компилятор может сделать умный бросок там, но я думаю, что в настоящее время это не так. Делать проще
if (data != null) { emit(data) }
должно работать. Обычная причина использовать ?.let
вместо этого, если проверено значение var
, которое здесь не применимо.
Причина, по которой работает emit(it)
, - параметр типа, выведенный для let
.
Странно то, что он прекрасно компилируется, если я явно приведу его таким образом emit(data as List<Bitmap>)
(но снова IDE показывает, что приведение не требуется).
Само по себе это не странно, в актерском составе вы говорите компилятору: «не имеет значения, что вы думаете о типе data
, я знаю лучше». Он скомпилируется, даже если у вас будет data: Any?
.
IDE, показывающая, что приведение не является необходимым, является странной частью и кое-что, что я бы посчитал ошибкой (которую вполне можно исправить, сделав приведение в действительности ненужным).