Kotlin 怎么return@map作品

Kotlin 怎么return@map作品,kotlin,Kotlin,我刚刚开始用kotlin学习Java流API,我正在使用ProjectReactor和R2DBCAPI。我正在写一个简单的代码,如下所示,如果能理解它是如何工作的,我将不胜感激 我想知道t.let{}使用return@map。我想知道这一行的作用是什么,即它是否创建列表/映射,以及它是如何做到这一点的 fun listAllMoviesBy(actor: String, client: DatabaseClient) { client.execute() .sql

我刚刚开始用kotlin学习Java流API,我正在使用ProjectReactor和R2DBCAPI。我正在写一个简单的代码,如下所示,如果能理解它是如何工作的,我将不胜感激

我想知道
t.let{}
使用
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)
            }
}
给定


return@mapceleb
将从
map
函数返回
celeb
参考值(而不是从
let
!)。这只是一种所谓的映射,而您可以手动指定语句的返回范围。

我还想知道何时执行此映射,即sql何时返回值?单个对象是如何添加到Flux API的?这个问题与Flux API有什么关系?这是完全不同的问题。映射将在执行
bind
方法后执行,并返回
map
方法将对
操作的值。all()
返回对象的
流量。所以我问了关于单个对象的问题。但没关系,我会挖掘可能的副本
.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
            }
        }