一、bean保存一个函数
代码如下:
data class UserBean(var age: Int, var name: String, var fun0: (Int) -> String)
使用:
val bean = UserBean(13, "张三") { shengao: Int ->
"我的身高是$shengao"
}
bean.fun0.invoke(170)
可以bean中存储一个函数,等需要用的时候直接获取来用即可,在list中使用bean来获取使用能缩小比较多的代码和逻辑
二、函数中返回一个匿名函数
函数代码:
fun showMethod(info: String): (String, Int) -> String {
println("我是showMethod函数 info:$info")
//返回一个匿名函数
return { name: String, age: Int ->
"我就是匿名函数:我的name:$name,age:$age"
}
}
使用:
val str = showMethod("1111").invoke("aaa", 222)
println("===>:$str")
三、Pair
和 Triple
在 Kotlin 中,Pair
和 Triple
是两种实用的数据结构,它们分别用于封装两个和三个值。这些类型在需要同时处理两个或三个相关的值,但又不希望创建复杂的类或泛型结构时非常有用。比如方法需要返回两个参数,又不想创建多余的bean
1. 使用 Pair
作为返回值
当函数需要返回两个相关值时,可以使用 Pair
。这避免了创建额外的类来封装这两个值。
fun findPersonById(id: Int): Pair<String, Int>? {
// 假设有一个数据库查询或其他逻辑
// ...
return Pair("Alice", 30) // 返回一个名字和年龄的Pair
}
2. 集合操作
你可以使用 Pair
在集合操作中表示键值对,尤其是在处理映射(如 Map
)时。
val map: Map<Int, String> = mapOf(1 to "One", 2 to "Two")
// 使用map.map将键和值转换为Pair列表
val pairs: List<Pair<Int, String>> = map.map { (key, value) -> Pair(key, value) }
// 或者,直接在for-each循环中使用键值对
map.forEach { (key, value) ->
println("Key: $key, Value: $value")
}
3. 使用 Triple
表示三维数据
当需要表示三个相关的值时,可以使用 Triple
。例如,在图形编程中,你可能需要表示一个点的 x、y 和 z 坐标。
val point = Triple(1, 2, 3) // 表示一个三维点
val (x, y, z) = point // 解构
println("X: $x, Y: $y, Z: $z")
知识点:
1、data打印能在Log里面看到所有的属性,解决了java不能打印bean的问题
data class UserBean(var age: Int, var name: String)
val bean = UserBean(18,"zhangsan")
Log.i("TAG","bean的具体内容为:"+bean)