Отражение имени 'this' в функции расширения Kotlin

Есть ли способ получить имя this в функции расширения?

fun Boolean?.persist() {

   if (this == null) return   // Do Nothing

   val nameOfVariable:String = //get the name of the variable? 

   // Persist variable
   PreferenceManager.getDefaultSharedPreferences(context).edit().putBoolean(nameOfVariable, this).apply()

}

2 ответа

Решение

То, что вы намерены сделать, невозможно. Вы должны предоставить nameOfVariable в качестве параметра. Функция расширения может быть вызвана для любого значения, также не поддерживаемого переменной.

Делегированные свойства могут быть альтернативой для ваших нужд.

Я думаю, ты не можешь этого сделать. В качестве обходного пути передайте имя в качестве параметра:

fun Boolean?.persist(name: String) {
    // ...
     PreferenceManager.getDefaultSharedPreferences(context).edit().putBoolean(name, this).apply()
}
Другие вопросы по тегам