學(xué)習(xí)內(nèi)容
1.擴(kuò)展函數(shù)與屬性
2.this關(guān)鍵字講解
3.String類擴(kuò)展屬性
4.List擴(kuò)展方法
package day1
//擴(kuò)展函數(shù)
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)
}
/**
* 擴(kuò)展屬性
* 給List添加一個擴(kuò)展屬性
*
*擴(kuò)展屬性允許出現(xiàn)在類或者文件中,不允許出現(xiàn)在方法
*
* this關(guān)鍵字:
* 在類的成員函數(shù)中,this指向這個類的當(dāng)前實例對象。
* 擴(kuò)展函數(shù)中或帶接收者的函數(shù)字面值中。this代碼調(diào)用函數(shù)時
* 點號左側(cè)傳遞的接收者參數(shù)。
* 如果this沒有限定符,那么它指向當(dāng)前代碼的最內(nèi)層范圍。
* 如果想要指向其他范圍內(nèi)的this,需要使用標(biāo)簽限定符。
*
* 擴(kuò)展屬性和擴(kuò)展方法可以新建以一個公關(guān)文件作為一個工具類。
*
*/
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 類的擴(kuò)展函數(shù)
* 目標(biāo)類型.方法名
* 如果在其他package下需要導(dǎo)入函數(shù)名
*
*/
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擴(kuò)展函數(shù)
*
*/
fun <T> List<T>.filter(predicate:(T)->Boolean):MutableList<T>{
val result = ArrayList<T>()
this.forEach {
if (predicate(it)) {
result.add(it)
}
}
return result
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。