Что это значит: return @ OnNavigationItemSelectedListener - PullRequest
0 голосов
/ 29 ноября 2018

Что означает «return @ OnNavigationItemSelectedListener» в приведенном ниже коде:

class MainActivity : AppCompatActivity() {

    private val mOnNavigationItemSelectedListener = BottomNavigationView.OnNavigationItemSelectedListener { item ->
        when (item.itemId) {
            R.id.navigation_home -> {
                message.setText(R.string.title_home)
                return@OnNavigationItemSelectedListener true
            }
            R.id.navigation_dashboard -> {
                message.setText(R.string.title_dashboard)
                return@OnNavigationItemSelectedListener true
            }
            R.id.navigation_notifications -> {
                message.setText(R.string.title_notifications)
                return@OnNavigationItemSelectedListener true
            }
        }
        false
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener)
    }
}

1 Ответ

0 голосов
/ 29 ноября 2018

Из документации Kotlin:

fun foo() {
    listOf(1, 2, 3, 4, 5).forEach lit@{
        if (it == 3) return@lit // local return to the caller of the lambda, i.e. the forEach loop
        print(it)
    }
    print(" done with explicit label")
}

Возвращаемое выражение возвращается из ближайшей включающей функции, т.е. foo.(Обратите внимание, что такие нелокальные возвраты поддерживаются только для лямбда-выражений, передаваемых встроенным функциям.) Если нам нужно вернуться из лямбда-выражения, мы должны пометить его и квалифицировать возвращение:

Подробнее здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...