Kotlin typealias属性
中文文档解释:
类型别名为现有类型提供替代名称。 如果类型名称太长,你可以另外引入较短的名称,并使用新的名称替代原类型名。
它有助于缩短较长的泛型类型。
https://www.kotlincn.net/docs/reference/type-aliases.html
可以为函数类型提供另外的别名:
typealias MyHandler = (Int, String, Any) -> Unittypealias Predicate<T> = (T) -> Boolean
上边是文档举例,并不能引起重视 , 下面来实际中举例
把集合声明一个别名,缩短泛型类名
typealias CalendarWeek = List<CalendarDay>
传递的时候,见名知意
@Composable
private fun Week(modifier: Modifier = Modifier,month: CalendarMonth,week: CalendarWeek,onDayClicked: (CalendarDay) -> Unit
)
使用时代码片如下
for (day in week) {Day(day,onDayClicked,month)}
@Composable
private fun getLeftRightWeekColors(week: CalendarWeek, month: CalendarMonth): Pair<Color, Color> {val materialColors = MaterialTheme.colorsval firstDayOfTheWeek = week[0].valueval leftFillColor = if (firstDayOfTheWeek.isNotEmpty()) {val lastDayPreviousWeek = month.getPreviousDay(firstDayOfTheWeek.toInt())if (lastDayPreviousWeek?.status?.isMarked() == true && week[0].status.isMarked()) {materialColors.secondary} else {Color.Transparent}} else {Color.Transparent}...
还可以把点击事件typealias
typealias OnExploreItemClicked = (ExploreModel) -> Unit
然后就可以方便的传递这个事件
data class SleepSearchContentUpdates(val onPeopleChanged: (Int) -> Unit,val onDateSelectionClicked: () -> Unit,val onExploreItemClicked: OnExploreItemClicked
)
MainScreen(onExploreItemClicked = { launchDetailsActivity(context = this, item = it) },onDateSelectionClicked = { launchCalendarActivity(this) } )
对于较长的名字如下,
typealias AVD = AnimatedVectorDrawable
不过有更加合适的声明
import android.graphics.drawable.AnimatedVectorDrawable as AVD
总结:
类型别名不会引入新类型,只是换了个更简洁或更具意义的名称
typealias CalendarWeek = List<CalendarDay>...fun Week(week: CalendarWeek){...}相当于public static final void Week(@NotNull List week) {...}
Kotlin typealias属性相关推荐
- [译]带你揭开Kotlin中属性代理和懒加载语法糖衣
翻译说明: 原标题: How Kotlin's delegated properties and lazy-initialization work 原文地址: https://medium.com/t ...
- kotlin获取属性_Kotlin程序获取系统MAC地址
kotlin获取属性 The task is to get system MAC address. 任务是获取系统MAC地址. package com.includehelp import java. ...
- kotlin 覆盖属性_Kotlin程序| 方法覆盖的示例
kotlin 覆盖属性 方法重载 (Method Overriding) Method overriding allows derived class has the same function na ...
- kotlin获取属性_Kotlin程序获取系统名称
kotlin获取属性 The task is to get the system name. 任务是获取系统名称. package com.includehelp import java.net.In ...
- kotlin获取属性_Kotlin程序| 属性获取器和设置器方法的示例
kotlin获取属性 属性获取器和设置器方法 (Properties Getter and Setter Methods) Variable having a class-level scope, d ...
- 【Kotlin】属性 与 幕后字段 ( 属性声明 | 属性初始化器 | 属性访问器 | field 属性幕后字段 | lateinit 延迟初始化属性 )
文章目录 I . 属性 字段 总结 II . 属性声明 III . 属性初始化器 IV . get / set 属性访问器 V . 属性幕后字段 field VI . 变量和常量的区别 VII . 延 ...
- Kotlin by属性委托
转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/119939781 本文出自[赵彦军的博客] 文章目录 属性委托要求 委托原理 实战演 ...
- Android kotlin静态属性、静态方法
Kotlin类不支持静态方法和成员,但Kotlin支持全局函数和变量,因此我们可以直接使用全局函数和变量来代替类中静态方法和静态成员变量.不过还有一个问题没解决,如果要使用类中的这些全局函数和变量,该 ...
- 理解 Kotlin 中的属性(property)
这篇文章是一时兴起想写的,因为我发现我对Kotlin的属性理解一直有误 Java 中的属性是什么(property) 首先我们要搞清楚在 Java 中属性是什么,在 Java 中类的属性不是指一个字段 ...
- Kotlin系列之类和属性
这一节我们学习Kotlin的类和属性. 学习过Java的小伙伴对面向对象应该不会陌生吧.虽然说Kotlin支持直接在文件中写函数,但是它同样支持面向对象,下面就来了解一下Kotlin的类和属性相关的知 ...
最新文章
- java返回有什么用,java中的return this什么时候用,返回的是类里面的方法类型,还是实例类?上面的代码什么意思...
- boost::multiprecision模块mpfr相关的测试程序
- c++STL容器的Vector
- ObjectFactory对象工厂类
- 不借助 Fiori client,直接在手机浏览器里调用 SAP UI5 BarcodeScanner 实现条形码扫描的可能性?
- 1092 回文字符串(51nod)
- 物理学与计算机相关参考文献,物理学专业论文参考文献
- HTML+CSS制作一个动画
- Wannafly挑战赛22: C. 多项式(大整数)
- charles 请求出现乱码_基于iOS的Charles抓包实践
- FeHelper工具(Web前端助手)
- windows系统搭建redis集群
- Netty系列三、Netty实战篇
- linux格式化分区进程,Linux 硬盘格式化、分区、挂载、卸载、删除分区,Linux重新调整分区...
- 什么样呢软件能测试你的车歪不歪,你知道吗?所有汽车轮子竟然是歪的!
- DirectX11 With Windows SDK--00 目录
- Python3开发 语法(四)
- 负压式爬壁机器人_负压吸附式爬壁机器人的体重设计
- Python二进制数据处理
- ggplot2 | R语言绘制世界地图choropleth