如何编写就地扩展功能

时间:2019-08-21 20:51:28

标签: kotlin extension-function

fun String.reversed():String{
// return another String..no 
prob
}

fun String.reverse(){
//in-place change this
} 

如何编写String.reverse()?

1 个答案:

答案 0 :(得分:0)

您可以检查如何在Kotlin代码库中为reverse实现就地扩展功能MutableListhttps://github.com/JetBrains/kotlin/blob/1.3.50/libraries/stdlib/js/src/generated/_CollectionsJs.kt#L20

fun <T> MutableList<T>.reverse(): Unit {
    val midPoint = (size / 2) - 1
    if (midPoint < 0) return
    var reverseIndex = lastIndex
    for (index in 0..midPoint) {
        val tmp = this[index]
        this[index] = this[reverseIndex]
        this[reverseIndex] = tmp
        reverseIndex--
    }
}

通常,您使用this实例,并在其上调用mutating方法来修改其内容。

但是,String类是不可变的:它不提供在适当位置修改其内容的方法,因此,您也无法编写用于在适当位置修改字符串的扩展。