因为我有以下使用Kotlin协程的代码:
fun doSomething(): Int = runBlocking {
var sampleInt= 2
val job = GlobalScope.launch {
sampleInt += 2
}
job.join()
return@runBlocking sampleInt
}
Android Studio允许我仅使用return@runBlocking
而不是简单地使用return
返回Integer。为什么不能仅使用return
却只能使用return@runBlocking
?它会更改任何代码行为吗?
为更好地理解,请从Firebase文档中明确复制的第二个示例:
db.collection("cities")
.whereEqualTo("state", "CA")
.addSnapshotListener(EventListener<QuerySnapshot> { value, e ->
if (e != null) {
Log.w(TAG, "Listen failed.", e)
--> This line return@EventListener
}
val cities = ArrayList<String>()
for (doc in value!!) {
if (doc.get("name") != null) {
cities.add(doc.getString("name")!!)
}
}
Log.d(TAG, "Current cites in CA: $cities")
})
我在“此行”中标记的返回语句实际上有什么作用?它会从头开始再启动一次功能吗?
谢谢!