Как работает return @ map - PullRequest
       2

Как работает return @ map

0 голосов
/ 16 апреля 2019

Я только начал изучать API Java Stream с kotlin, и я использую Project Reactor вместе с API r2dbc.Я пишу простой код, приведенный ниже, и буду признателен за понимание того, как это работает.

Я хочу знать строку, где t.let{} возвращает объект MovieCeleb, используя return@map.Я хочу знать, что делает эта строка, т. Е. Создает ли она список / карту и как она это делает.

fun listAllMoviesBy(actor: String, client: DatabaseClient) {
    client.execute()
            .sql { "SELECT fin.id, full_name, movie_title, make_year, celeb_id, birth_date " +
                    "FROM featured_in fin JOIN film_celeb fc ON " +
                    " fin.celeb_id = fc.id WHERE fc.full_name = $1"
            }.bind(0, actor).map { t, u ->
                t.let {
                   val featuredIn = FeaturedIn(it.get("id") as Int, it.get("movie_title") as String, it.get("make_year") as Int)
                   val celeb = MovieCeleb(it.get("celeb_id") as Int, it.get("full_name") as String, it.get("birth_date") as LocalDate, featuredIn)
                    return@map celeb
                }
            }.all()
            .subscribe{
                println(it)
            }
}

1 Ответ

1 голос
/ 16 апреля 2019

С учетом

.map { t, u ->
            t.let {
               val featuredIn = FeaturedIn(it.get("id") as Int, it.get("movie_title") as String, it.get("make_year") as Int)
               val celeb = MovieCeleb(it.get("celeb_id") as Int, it.get("full_name") as String, it.get("birth_date") as LocalDate, featuredIn)
                return@map celeb
            }
        }

return@map celeb вернет celeb эталонное значение от map функции (не из let!).Это просто некое так называемое нелокальное возвращение , тогда как вы можете вручную указать область возврата вашего оператора.

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