我想编写修改this的扩展函数,例如:
var a = false
a.toggle() // now a contains false
or
var a = 1
a.increment() // now a contains 2
在Kotlin 有可能吗?
我可以创建一个扩展函数,返回修改后的值,但不修改"this",但我希望更方便!看起来Swift 能做到.
我想编写修改this的扩展函数,例如:
var a = false
a.toggle() // now a contains false
or
var a = 1
a.increment() // now a contains 2
在Kotlin 有可能吗?
我可以创建一个扩展函数,返回修改后的值,但不修改"this",但我希望更方便!看起来Swift 能做到.
目前还不支持对变量的引用,但您可以创建扩展函数用于property references:
fun KMutableProperty0<Boolean>.not() = set(get().not())
fun KMutableProperty0<Int>.inc() = set(get().inc())
var a = false
var b = 1
fun main(vararg args: String) {
::a.not()
// now `a` contains `true`
::b.inc()
// now `b` contains `2`
}
Or if you'd rather the extension functions return the new value along with setting it:
fun KMutableProperty0<Boolean>.not(): Boolean = get().not().apply(setter)
fun KMutableProperty0<Int>.inc(): Int = get().inc().apply(setter)