gpt4 book ai didi

kotlin - 从内部 `with` 函数引用到更高级别的 `with` 函数

转载 作者:行者123 更新时间:2023-12-02 08:04:39 26 4
gpt4 key购买 nike

在我的代码中有这样的结构

post { req ->
with(req.objectBody<Person>()) {
logger.info { "Attempt to save person $this" }
with(require<SessionFactory>().openSession()) {
save(this@with)
}
}
}

但是 IDE 警告我 there is more than one label with such a name .在这种情况下

save(this@with)

我想引用with(req.objectBody<Person>)实例。如何实现?

最佳答案

从技术上讲,您可以使用自定义标签标记 lambda,然后使用带有这些标签的 labeled this。比如:

with(foo()) mylabel@{
with(bar()) {
baz(this@mylabel)
}
}

但是,为了提高可读性,您可以使用 let 作用域函数并为参数提供一个名称,而不是 with:

foo().let { fooResult ->
bar().let { barResult ->
baz(fooResult)
}
}

关于kotlin - 从内部 `with` 函数引用到更高级别的 `with` 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52861896/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com