Есть ли способ получить имя '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() }
То, что вы намереваетесь сделать, невозможно.Вы должны предоставить nameOfVariable в качестве параметра.Функция расширения может быть вызвана для любого значения, также не поддерживаемого переменной.
nameOfVariable
Делегированные свойства может быть альтернативой для ваших нужд.
Я думаю, ты не можешь этого сделать.В качестве обходного пути передайте имя в качестве параметра:
fun Boolean?.persist(name: String) { // ... PreferenceManager.getDefaultSharedPreferences(context).edit().putBoolean(name, this).apply() }