我的kotlin学习之旅-day6-2020-12-26

学习内容

1.扩展函数与属性

2.this关键字讲解

3.String类扩展属性

4.List扩展方法

package day1


//扩展函数

fun main(args:Array<String>){
    println("aaabbcc".firstChar())
    println("ccaddv".lastChar())
    val list = mutableListOf(1,2,3,4,5,6,7)
    val result = list.filter {
        it % 2 ==1
    }
    println(result)
    println(list.firstElement)
    println(list.lastElement)
    list.firstElement = -2
    list.lastElement = 10
    println(list.firstElement)
    println(list.lastElement)
}

/**
 * 扩展属性
 * 给List添加一个扩展属性
 *
 *扩展属性允许出现在类或者文件中,不允许出现在方法
 *
 * this关键字:
 * 在类的成员函数中,this指向这个类的当前实例对象。
 * 扩展函数中或带接收者的函数字面值中。this代码调用函数时
 * 点号左侧传递的接收者参数。
 * 如果this没有限定符,那么它指向当前代码的最内层范围。
 * 如果想要指向其他范围内的this,需要使用标签限定符。
 *
 * 扩展属性和扩展方法可以新建以一个公关文件作为一个工具类。
 *
 */
var <T> MutableList<T>.firstElement: T
    get() {
        return this[0]
    }

    set(value) {
        this[0] = value
    }

var <T> MutableList<T>.lastElement: T
    get() {
        return this[this.size-1]
    }

    set(value) {
        this[this.size-1] = value
    }

/**
 *
 * String 类的扩展函数
 * 目标类型.方法名
 * 如果在其他package下需要导入函数名
 *
 */
fun String.firstChar():String{
    if(this.isEmpty()) return ""
    return this[0].toString()
}

fun String.lastChar():String{
    if (this.isEmpty()) return ""
    return this[this.length-1].toString()
}

/**
 * List扩展函数
 *
 */
fun <T> List<T>.filter(predicate:(T)->Boolean):MutableList<T>{
    val result = ArrayList<T>()
    this.forEach {
        if (predicate(it)) {
            result.add(it)
        }
    }
    return result
}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容