当前位置:网站首页>The use of generics and vararg variable parameters in kotlin
The use of generics and vararg variable parameters in kotlin
2022-07-07 08:14:00 【yu-Knight】
//Kotlin Medium generics and vararg The use of variable parameters
class KtBase10<T>(vararg objects: T, var isMap: Boolean) {
//out there T Can only be read , Do not modify
private val objectArray: Array<out T> = objects
fun showObj(index: Int): T? = objectArray[index].takeIf { isMap } ?: null
fun <O> mapObj(index: Int, mapAction: (T?) -> O): O? = mapAction(objectArray[index].takeIf { isMap })
// fun <O> mapObj(index: Int, mapAction: (T?) -> O): O? {
// return mapAction(objectArray[index].takeIf { isMap })
// }
}
fun main(args: Array<String>) {
val p: KtBase10<Any?> = KtBase10("yuknight", 123, 22.1f, null, 'A', isMap = true)
println(p.showObj(0))
println(p.showObj(1))
println(p.showObj(2))
println(p.showObj(3))
println(p.showObj(4))
println()
var r: Any? = p.mapObj(0) {
it.toString().length
}
println(r)//8
var r1 = p.mapObj(1) { obj: Any? ->
// obj.toString().length
" The second parameter is :$obj"
}
println(r1)// The second parameter is :123
//
val p2: KtBase10<String> = KtBase10("AAA", "BBB", "CCCC", isMap = true)
val r3 = p2.mapObj(0){
it
" Turn into String type :$it"
}
println(r3)// Turn into String type :AAA
val r4 = p2.mapObj(2){
str: String? -> " Turn into String type :$str"
}
println(r4)// Turn into String type :CCCC
}
边栏推荐
猜你喜欢
Myabtis_ Plus
Make LIVELINK's initial pose consistent with that of the mobile capture actor
追风赶月莫停留,平芜尽处是春山
Rainbond 5.6 版本发布,增加多种安装方式,优化拓扑图操作体验
Bugku CTF daily one question chessboard with only black chess
[quickstart to Digital IC Validation] 15. Basic syntax for SystemVerilog Learning 2 (operator, type conversion, loop, Task / Function... Including practical exercises)
【數字IC驗證快速入門】15、SystemVerilog學習之基本語法2(操作符、類型轉換、循環、Task/Function...內含實踐練習)
Unityhub cracking & unity cracking
【数字IC验证快速入门】13、SystemVerilog interface 和 program 学习
一文了解如何源码编译Rainbond基础组件
随机推荐
在Rainbond中实现数据库结构自动化升级
雅思考试自己的复习进度以及方法使用【日更版】
Yugu p1020 missile interception (binary search)
在 Rainbond 中一键安装高可用 Nacos 集群
Avatary的LiveDriver试用体验
快解析内网穿透为文档加密行业保驾护航
jeeSite 表单页面的Excel 导入功能
基于Pytorch 框架手动完成线性回归
【踩坑系列】uniapp之h5 跨域的问题
UnityHub破解&Unity破解
力扣(LeetCode)187. 重复的DNA序列(2022.07.06)
饥荒云服管理脚本
太真实了,原来自己一直没有富裕起来是有原因的
Myabtis_ Plus
在Rainbond中一键部署高可用 EMQX 集群
Avatary's livedriver trial experience
让Livelink初始Pose与动捕演员一致
BiSeNet的特点
Qinglong panel - today's headlines
柯基数据通过Rainbond完成云原生改造,实现离线持续交付客户