返回“ @”之后的代码是什么意思,其目的是什么?

时间:2018-12-19 19:19:59

标签: kotlin

因为我有以下使用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")
        })

我在“此行”中标记的返回语句实际上有什么作用?它会从头开始再启动一次功能吗?

谢谢!

0 个答案:

没有答案