news 2026/5/1 17:29:28

Kotlin 开发 - 双冒号操作符(引用顶层函数、引用成员函数、引用构造函数、引用属性、引用类)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Kotlin 开发 - 双冒号操作符(引用顶层函数、引用成员函数、引用构造函数、引用属性、引用类)

双冒号操作符

1、引用顶层函数
  • 直接引用::【函数名】
funisOdd(x:Int)=x%2!=0valnumbers=listOf(1,2,3)valoddNumbers=numbers.filter(::isOdd)println(oddNumbers)
// 等价于funisOdd(x:Int)=x%2!=0valnumbers=listOf(1,2,3)valoddNumbers=numbers.filter{isOdd(it)}println(oddNumbers)
2、引用成员函数
  1. 未绑定引用【类名】::【成员函数】
vallist=listOf("a","bb","ccc")vallengths=list.map(String::length)println(lengths)
// 等价于vallist=listOf("a","bb","ccc")vallengths=list.map{it.length}println(lengths)
dataclassPerson(valname:String,valage:Int)vallist=listOf(Person("Alice",25),Person("Bob",30))valnames=list.map(Person::name)println(names)
// 等价于dataclassPerson(valname:String,valage:Int)vallist=listOf(Person("Alice",25),Person("Bob",30))valnames=list.map{it.name}println(names)
  1. 已绑定引用【对象实例】::【成员函数】
dataclassPerson(valname:String,valage:Int)valp=Person("Alice",25)valnameGetter=p::nameprintln(nameGetter())
3、引用构造函数
dataclassPerson(valname:String,valage:Int)valcreatePerson=::Personvalp=createPerson("Alice",25)println(p)
4、引用属性
varcount=0funmain(){valcountProperty=::countprintln(countProperty.get())countProperty.set(5)println(count)}
  • 对于局部变量,Kotlin 编译器不支持生成可修改的属性引用,只能生成只读的引用
funmain(){varcount=0valcountProperty=::countprintln(countProperty.get())countProperty.set(5)println(count)}
# 输出结果 Unresolved reference 'set'.
5、引用类
dataclassPerson(valname:String,valage:Int)valkClass:KClass<Person>=Person::classprintln(kClass.simpleName)
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/29 14:27:23

关系数据库设计中用于推导函数依赖的Armstrong公理系统 (Armstrong Axioms)

最常见的情况是指数据库理论中的 Armstrong 公理&#xff08;通常被简称为 ARM 公理&#xff09;&#xff0c;它是推导函数依赖的核心规则。另一个较窄的定义是指 ARM 处理器架构中关于内存并发操作的原子公理。 [1, 2, 3] 以下为您详细介绍最常用的数据库 Armstrong 公理&…

作者头像 李华
网站建设 2026/4/29 14:27:09

AI Agent叙事引擎:将数据转化为故事,提升技术报告可读性与价值

1. 项目概述&#xff1a;为AI Agent注入叙事灵魂在AI Agent&#xff08;智能体&#xff09;的开发浪潮中&#xff0c;我们常常聚焦于其逻辑推理、代码生成或数据分析能力&#xff0c;却容易忽略一个关键维度&#xff1a;如何让AI的输出结果不仅仅是“正确”的&#xff0c;更是“…

作者头像 李华
网站建设 2026/4/29 14:23:05

HarmonyOS长列表scrollToIndex性能优化全解析

引言&#xff1a;长列表滚动的性能挑战在HarmonyOS应用开发中&#xff0c;List组件作为高性能列表渲染的核心控件&#xff0c;广泛应用于社交动态、消息记录、商品展示等需要展示大量数据的场景。当列表项数量达到数千甚至上万时&#xff0c;如何实现快速、流畅的滚动定位成为开…

作者头像 李华