Avatar ·

ماذا يعني `return@` في Kotlin وكيفية استخدام علامات الإرجاع بشكل صحيح؟

مرحباً بالجميع! أنا أتعلم Kotlin وقد صادفت بناء غريباً هو `return@`. أراه في الكود مع RxJava، لكنني لا أفهم لماذا هو مطلوب.\n\nلدي هذا الكود:\n\n```kotlin\nfun main() {\n listOf(1, 2, 3, 4, 5).forEach {\n if (it == 3) {\n return@forEach\n }\n println(it)\n }\n println("تم")\n}\n```\n\nكنت أتوقع أن `return` سيخرج ببساطة من forEach، لكنه يخرج من الدالة main بأكملها. بدون `@forEach`، الكود لا يُترجم أصلاً مع خطأ "return is not allowed here". لماذا يحدث هذا؟\n\nأيضاً رأيت هذا المثال مع RxJava:\n\n```kotlin\nobservable.subscribe { value ->\n if (value.isInvalid()) {\n return@subscribe\n }\n process(value)\n}\n```\n\nماذا يعني `return@subscribe`؟ لماذا لا يمكن ببساطة كتابة `return`؟ اشرحوا لي، من فضلكم.