Отражение имени '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()
}