Отражение имени 'this' в функции расширения Kotlin - PullRequest
0 голосов
/ 23 ноября 2018

Есть ли способ получить имя '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 ]

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

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

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

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

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

fun Boolean?.persist(name: String) {
    // ...
     PreferenceManager.getDefaultSharedPreferences(context).edit().putBoolean(name, this).apply()
}
...