Регистрация типа переменной в Kotlin

Я пытался найти тип переменной context в Android Studio, зарегистрировав его в консоли. Однако я получаю два разных результата, когда я

  1. Сначала сохранил в переменной typeContext, а потом записал
  2. Зарегистрирован напрямую context!!::class.simpleName

o/p были

  1. MainActivity
  2. com.example.android.testapp.MainActivity@95580a4!!::class.simpleName

неожиданно разные для обоих случаев. Может кто-нибудь объяснить, почему это происходит?

override fun onAttach(context: Context?) {
    super.onAttach(context)

    val typeContext = context!!::class.simpleName

    Log.d("my_debug", "type of context is given by: $typeContext or $context!!::class.simpleName")

    {....}
}
1
0
114
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Во втором случае Kotlin не анализирует вашу интерполяцию строк так, как вы ожидаете. Он считает, что $ в $context!!::class.simpleName означает, что вы хотите интерполировать значение $context (за которым следует строковый литерал !!...).

Чтобы исправить это, используйте ${...}, чтобы точно указать, какое выражение вы хотите интерполировать.

Другими словами, замените $context!!::class.simpleName на ${context!!::class.simpleName}.

Другие вопросы по теме