Использование let для возврата, если получатель равен нулю в случае ошибки - PullRequest
0 голосов
/ 03 сентября 2018
Kotlin 1.2.50

У меня есть следующая предоставленная зависимость, которая создаст MovieListItemDecorator, и в конструкторе она передаст drawable. Однако метод getDrawable может возвращать обнуляемое значение:

т.е.

@Nullable
public static final Drawable getDrawable(@NonNull Context context, @DrawableRes int id)

Я думаю, что я могу сделать в случае, когда getDrawable возвращает нулевое значение: я указал 2 случая ниже. Но если getDrawable возвращает null, я не хочу передавать это в конструктор MovieItemDecorator()

1)

@MovieListScope
    @Provides
    fun provideMovieItemDecorator(context: Context): MovieItemDecorator {
        var drawable: Drawable by Delegates.notNull()

        ContextCompat.getDrawable(context, R.drawable.blue_border)?.let {
            drawable = it
        }

        return MovieItemDecorator(drawable)
    }

2)

 @MovieListScope
    @Provides
    fun provideMovieItemDecorator(context: Context): MovieItemDecorator {
        ContextCompat.getDrawable(context, R.drawable.blue_border)?.let {
           return MovieItemDecorator(it)
        } ?: {
            return MovieItemDecorator(....) /* what to return here */
        }
    }

1 Ответ

0 голосов
/ 03 сентября 2018

Трудно понять вашу проблему, но я думаю, в конце концов, вам нужен MovieDecorator.

Если для этого MovieItemDecorator требуется параметр drawable, то для случая нуля у вас должен быть drawable (скажем, ColorDrawable)

@MovieListScope
    @Provides
    fun provideMovieItemDecorator(context: Context) : MovieItemDecorator {
        val drawable = ContextCompat.getDrawable(context, R.drawable.blue_border) ?: ColorDrawable() 
        return MovieItemDecorator(drawable as Drawable)
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...