我在我的一个项目中使用RxJava,我使用Android Studio插件将我的一个类转换为静态编程语言,并在map平Map
lambda(java中的Func1)之一中,中间体返回如下所示@Func1
。
我不知道这意味着什么。
something.flatMap(Func1<ArticleCriteria, Observable<Pair<String, String>>> {
val isTemporaryClone = it.isATemporaryClone
val isTheOriginalToken = it.tokenIsOriginalHere
if (isTemporaryClone) {
if (!isTheOriginalToken) {
return@Func1 paramsError("Token is always original for temp articles")
}
return@Func1 mJobRunner.doNotRun(DeleteArticleJob.TAG)
.doOnNext(deletePersonalActionById(articleId))
}
runArticleJobAsync(DeleteArticleJob.TAG, it)
})
< code>return@name确定应该应用哪个闭包< code>return语句。
在静态编程语言中,您可以从嵌套闭包调用返回来完成外部闭包。Java这是不可能的。
通常,您可以省略@name
。
在您的示例中,您不能省略它,因为< code>Func1在另一个函数中使用。
在Kotlin中,< code>return@label语法用于指定该语句从几个嵌套函数中的哪一个返回。
它与函数文字(lambdas)和局部函数一起工作。未标记的< code>return语句从最近的(即最里面的)封闭< code>fun返回(忽略lambdas)。考虑这个函数:
fun foo(ints: List<Int>) {
ints.forEach {
if (it == 0) return
print(it)
}
}
在这里,return
将完成 foo 的执行
,而不仅仅是 lambda。
但是,如果您想从任何其他函数(lambda或外部乐趣
)返回,您必须在返回
语句中将其指定为标签:
fun foo(ints: List<Int>) {
ints.forEach {
if (it == 0) return@forEach // implicit label for lambda passed to forEach
print(it)
}
}
fun foo(ints: List<Int>): List<String> {
val result = ints.map f@{
if (it == 0) return@f "zero" // return at named label
if (it == -1) return emptyList() // return at foo
"number $it" // expression returned from lambda
}
return result
}
foo(listOf(1, -1, 1)) // []
foo(listOf(1, 0, 1)) // ["number 1", "zero", "number 1"]
来自lambda的非本地返回(即从外部函数返回)仅支持本地和内联函数,因为如果lambda没有内联(或者函数放置在对象内部),则不能保证仅在封闭函数内部调用(例如,它可以存储在变量中并稍后调用),在这种情况下,非本地返回将毫无意义。
对于限定的<code>this<code>也有类似的语法,用于引用外部作用域的接收器:<code>this@outer。
它与扩展函数有什么关系?为什么带有的是函数,而不是关键字? 这个主题似乎没有明确的留档,只有关于扩展的知识假设。
我试图发送一个用户到一个活动的基础上,如果他们的电子邮件被验证,然后如果他们有一个用户名。到目前为止,我的代码如下所示: 和 我如何通过活动?我试着将它作为字符串传递,但没有成功。我做错了什么?
这里已经阐明了和之间的区别。 但我的问题是,为什么我们要使用关键字?从生成的Java代码角度来看没有区别。 静态编程语言代码: 生成:
正式学习 Python 之前,我们有必要先搞清楚【 编程语言】这个概念。 在我们很小的时候,父母就教我们开口说话,也教我们如何理解别人讲话的意思。经过长时间的熏陶和自我学习,我们在不知不觉中学会了说话,也能听懂其他小朋友说话的意思,于是我们开始用语言与他人交流。 世界上存在许多种语言,包括汉语、英语、日语、俄语等等,每种语言都有固定的格式,比如汉语(中国话),每个汉字代表着不同的意思,我们必须正确
我试图用OkHttp和Cucumber在静态编程语言中设置一个Spring启动项目,并且在运行Cucumber任务时遇到以下错误。如何修复? 还有build gradle kts片段 我看到了这个错误https://github.com/square/okio/issues/647看起来可能是它,并修复了这个build.gradle,我如何将其翻译为kotlinbuild.gradle.kts?
本文向大家介绍什么是Perl编程语言?,包括了什么是Perl编程语言?的使用技巧和注意事项,需要的朋友参考一下 Perl是一种通用编程语言,最初是为文本处理而开发的,现在用于各种任务,包括系统管理,Web开发,网络编程,GUI开发等。 Perl是一种稳定的跨平台编程语言。 尽管Perl并不是正式的缩写,但很少有人将其用作实用提取和报告语言。 它用于公共和私营部门的关键任务项目。 Perl是一种开放