0
点赞
收藏
分享

微信扫一扫

Kotlin varage 可变参数


class MagicBox<T : Human>(vararg item: T) {
private var subject: Array<out T> = item
var available = false

//泛型作为返回类型参数
fun fetch(index: Int): T? {
//available 为空就返回空 不然就返回实例本身
return subject[index].takeIf { available }
}

//多泛型参数
/**
* 魔盒里面放的是男孩 取得时候编程男人
*/
fun <R> fetch(index: Int, subjectModFunction: (T) -> R): R? {
return subjectModFunction(subject[index]).takeIf { available }
}

}

说起来泛型比较难以理解。但是可以用Int去理解

定义 (vararg item:Int)

接受(private var subject: Array<out Int> = item)

out关键字暂时不做解释。但是这里可以接受var age 然后转变为一个Array参数。

fun main() {
val box1 = MagicBox(Boy("Jack", 15), Boy("张三", 16), Boy("李四", 17))
box1.available = true
val res=box1.fetch(2) {
Man(it.name, it.age.plus(15))
}
println(res?.name)
println(res?.age)

}

Kotlin varage 可变参数_kotlin

你我都知道。往里面传递一个index 非常的不方便。可以通过重写get函数。来使用[]进行取值

operator fun get(index: Int): T? = subject[index].takeIf { available }

Kotlin varage 可变参数_取值_02

 

Kotlin varage 可变参数_取值_03

 

举报

相关推荐

0 条评论