fun isOdd(x: Int) = x % 2 != 0
val numbers = listOf(1, 2, 3)
val oddNumbers = numbers.filter(::isOdd)
println(oddNumbers)
kotlin复制代码
// 等价于
fun isOdd(x: Int) = x % 2 != 0
val numbers = listOf(1, 2, 3)
val oddNumbers = numbers.filter { isOdd(it) }
println(oddNumbers)
2、引用成员函数
未绑定引用 【类名】::【成员函数】
kotlin复制代码
val list = listOf("a", "bb", "ccc")
val lengths = list.map(String::length)
println(lengths)
kotlin复制代码
// 等价于
val list = listOf("a", "bb", "ccc")
val lengths = list.map { it.length }
println(lengths)
kotlin复制代码
data class Person(val name: String, val age: Int)
val list = listOf(Person("Alice", 25), Person("Bob", 30))
val names = list.map(Person::name)
println(names)
kotlin复制代码
// 等价于
data class Person(val name: String, val age: Int)
val list = listOf(Person("Alice", 25), Person("Bob", 30))
val names = list.map { it.name }
println(names)
已绑定引用 【对象实例】::【成员函数】
kotlin复制代码
data class Person(val name: String, val age: Int)
val p = Person("Alice", 25)
val nameGetter = p::name
println(nameGetter())
3、引用构造函数
kotlin复制代码
data class Person(val name: String, val age: Int)
val createPerson = ::Person
val p = createPerson("Alice", 25)
println(p)
4、引用属性
kotlin复制代码
var count = 0
fun main() {
val countProperty = ::count
println(countProperty.get())
countProperty.set(5)
println(count)
}
对于局部变量,Kotlin 编译器不支持生成可修改的属性引用,只能生成只读的引用
kotlin复制代码
fun main() {
var count = 0
val countProperty = ::count
println(countProperty.get())
countProperty.set(5)
println(count)
}
复制代码
# 输出结果
Unresolved reference 'set'.
5、引用类
kotlin复制代码
data class Person(val name: String, val age: Int)
val kClass: KClass<Person> = Person::class
println(kClass.simpleName)