在 Kotlin 扩展函数中反映 'this' 的名称
Reflecting the name of 'this' in a Kotlin extension function
有没有办法在扩展函数中获取 '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()
}
我认为你不能那样做。作为解决方法将名称作为参数传递:
fun Boolean?.persist(name: String) {
// ...
PreferenceManager.getDefaultSharedPreferences(context).edit().putBoolean(name, this).apply()
}
你想做的事是不可能的。您必须提供 nameOfVariable
作为参数。扩展函数也可以在没有变量支持的任何值上调用。
Delegated Properties 可能是满足您需求的替代方案。
有没有办法在扩展函数中获取 '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()
}
我认为你不能那样做。作为解决方法将名称作为参数传递:
fun Boolean?.persist(name: String) {
// ...
PreferenceManager.getDefaultSharedPreferences(context).edit().putBoolean(name, this).apply()
}
你想做的事是不可能的。您必须提供 nameOfVariable
作为参数。扩展函数也可以在没有变量支持的任何值上调用。
Delegated Properties 可能是满足您需求的替代方案。