首页
学习
活动
专区
圈层
工具
发布

【Kotlin】常用的 Kotlin 类 ② ( 枚举类 | 枚举类定义函数 | 密封类 )

文章目录 一、枚举类 二、枚举类定义函数 1、枚举类定义普通函数 2、枚举类定义构造函数 三、密封类 一、枚举类 ---- Kotlin 中使用 枚举类 定义常量 , 枚举类定义格式如下 : 枚举常量...枚举的 常量名称 ; MALE true 枚举的常量 Gender.MALE 是 Gender 类的一个 实例对象 ; 二、枚举类定义函数 ---- 在枚举类中 , 可以 定义函数 , 包括 普通函数...和 构造函数 ; 1、枚举类定义普通函数 通过 枚举类 的 类型常量 ( 实例对象 ) 可以 调用 枚举类中定义的方法 ; 为枚举类定义普通函数 : 在枚举类 Gender 中定义了 log 函数 ,...是一组 子类型 闭集 ; 密封类 可以 定义 枚举类型的 子类型闭集 , 一个密封类可以有多个子类 , 继承密封类的子类 必须 与 密封类在相同的 Kotlin 代码文件中 ; 密封类适用于这种情况..., 要使用枚举的特性 , 但是需要在枚举基础上保存多个特性 ; 枚举只能实现简单的常量列举 , 如果需要更复杂的 子类型闭集 , 则需要使用密封类 ; 代码示例 : sealed class Gender

1.6K10

Python列表解析式到底该怎么用?

列表解析式的优势 比循环更节省时间和空间。 需要更少的代码行。 可将迭代语句转换为公式。 如何在 Python 中创建列表 列表解析式是一种基于现有列表创建列表的语法结构。...这确实是 Python 风格,并且是创建列表的更好方法。为了弄清楚这种方法有多强大,我们用一个单行代码来重写那个循环示例。...创建列表的最优的方法是 map(),排在第二位的是列表解析式,最后是循环。...例如,假设一家公司正在跟踪一年中五个不同城市的收入。存储这些数据的完美数据结构可以是嵌套在字典解析式中的列表解析式。...当选择一个方法时,您应该根据解析式是有助于还是有损于可读性来做出相应的判断。 为大型数据集使用生成器 Python 中的列表解析式通过将整个列表存储到内存中来工作。对于小型至中型列表这通常很好。

2.9K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Kotlin委托的深入解析与实践

    Rouse 读完需要 5 分钟 速读仅需 2 分钟 引言 在Kotlin编程语言中,委托是一项强大的特性,它能够极大地简化代码,提高代码的可维护性。...本文将深入探讨Kotlin中的委托机制,介绍其原理、具体使用方式以及实际应用场景。 委托的原理 委托是一种通过将实际工作委托给其他对象来实现代码重用的机制。...在Kotlin中,委托通过关键字 by 来实现。我们将首先了解委托的基本原理,为后续的实例打下基础。 基本语法 Kotlin中的类可以通过关键字 by 委托给其他类。...具体使用示例 接下来,我们将通过实际的示例来演示Kotlin委托的具体使用方式。我们将使用委托来实现属性的延迟初始化,这是委托的一个常见用法。...这种结构使得我们可以轻松切换不同的网络请求实现,而不需要修改业务逻辑。 结论 通过本文的学习,我们深入了解了Kotlin中委托的原理和使用方式。

    44630

    用Kotlin的方式来处理网络异常

    森林的梦想.jpg 一. 前言 之前的文章 RxJava处理业务异常的几种方式 曾经介绍过 Retrofit 的异常可以有多种处理方式。...其中,可以使用 RxJava 的错误处理操作符,它们是专门用来处理异常的。 随便例举两个操作符: onErrorReturn 操作符,表示当发生错误的时候,发射一个默认值然后结束数据流。...在返回的被观察者中是看不到错误信息的。 二. 使用 Kotlin 的特性 这次我结合 Kotlin 扩展函数的特性来尝试处理异常。...它的 action 参数传递的是一个函数,专门用于处理异常。每一个网络请求的异常处理并不会都一样,可以用该函数来传递不同的异常处理。 总结 合理利用 Kotlin 的扩展函数,可以编写优雅的代码。...而使用高阶函数,则可以达到的进一步的抽象。

    66520

    告别贫血枚举!用C#强类型枚举模式实现真正的面向对象设计

    原生C#枚举就像纸板剪影——只有标签,没有灵魂。需要为每种信用卡类型设置折扣率?准备好面对冗长的switch语句。想添加验证或本地化?你不得不在代码库中搜寻分散的辅助字典。...如果你认为原生枚举"够用",那只是因为还没遇到过需要将业务逻辑塞进巨型switch怪兽的需求场景。 想象一下:用类化的枚举实例取代单调的枚举——每个实例自带数据和行为。想要铂金卡折扣?直接问枚举对象。...这就是Milan强类型枚举模式的魔力——将枚举从哑常量升级为一等公民。...1 | 原生枚举的致命缺陷 缺陷 痛点 无行为 折扣、验证等逻辑需要外部工具类 无扩展数据 无法附加显示名称等元数据 难以演进 新增枚举值需更新所有switch否则引发bug 封装性差 逻辑散落各处,枚举无法自治...• Enumeration基类提供相等性、查询和反射发现 • 每个具体枚举值都是类实例——迷你策略模式 • 消除脆弱switch和辅助字典,增强封装和可测试性 • 告别贫血枚举,迎接真正面向对象的枚举实现

    15810

    Rust枚举深度解析:构建灵活的数据结构

    ("Yellow") } 带数据的枚举 带数据的枚举允许在每个枚举变体上附加一个或多个值。...), ChangeColor(i32, i32, i32) } 在 Message 枚举中 Quit 是一个没有关联数据的枚举变体 Move 是一个带有两个整数字段 x 和 y 的枚举变体 Write...是一个带有一个字符串字段的枚举变体 ChangeColor 是一个带有三个整数字段的枚举变体,代表RGB颜色值 使用带数据的枚举 let quit_message = Message::Quit; let...经常用于表示命令、事件、消息或其他需要关联数据的等场景 内存中的枚举 在内存中,带有数据的枚举会以一个小型整数标签加上足以容纳最大变体中所有字段的内存块的格式进行存储。标签字段供 Rust 内部使用。...,看不懂可以直接过,一般不影响实战开发 用枚举表示富数据结构 枚举对于快速实现树形数据结构也很有用。

    54810

    一次有趣的 Kotlin 语法解析实践

    我想到了使用注解的方式,对于业务方来说,他们只要按照注解需要的 value 进行录入即可,可选参数用默认值代替,并且还可以注释提示,来看下注解的定义: annotation class Component...静态解析确实是个好主意,但目前可参考的只有 java,如果业务方是用 kotlin 写的呢?...既然有 java 文件解析,那一定就有 kotlin 文件解析,google 搜了下,查到了三个库: kotlin-parser[2] : 调研发现有点难用,无法根据注解方法的回调遍历注解参数 kastree...("node",v) } 用法非常简单,我们可以尝试解析我们的注解类了,不过,我们得先了解下如果遍历 Node 节点的,我们可以打印输出一下 Node 的结构是什么样的,以下去除了无用的信息,只保留了注解的...在我们解析拿到了内容之后,那接下来的生成 json 文件就更简单了,我们只需给每个待解析的 kt 文件创建个 JSONObject 节点,然后将解析到的信息都 put 进去,如果有多个文件的话,则创建个

    1.2K30

    用kotlin打印出漂亮的android日志(二)

    先放github地址: https://github.com/fengzhizi715/SAF-Kotlin-log 下载安装 Gradle: compile 'com.safframework.log...打印json格式.png 使用方法 首先,使用它无需添加kotlin的配置。它可以在任何android项目中使用。...如果不考虑显示日志的tag,可以直接使用 String s = "abcd"; L.i(s); 如果需要使用tag,可以在Activity的onCreate()中添加如下的代码,类名则对应是tag的名称...java中的使用方法: L.setLogLevel(L.LogLevel.INFO); kotlin中的使用方法: L.logLevel= L.LogLevel.INFO 最后,json方法的使用 Object...L.json(obj); 总结 kotlin用来做一些小工具还是挺爽的。如果觉得不爽,欢迎吐槽_ 下一篇应该会写一下用kotlin实现activity的路由框架。

    79920

    前端开发者的 Kotlin 之旅:反射解析

    前端开发者的 Kotlin 之旅:反射解析还记得在 JavaScript 中使用 Object.keys(obj) 遍历对象属性,或者用 obj[propertyName] 动态访问属性吗?...这些其实就是反射的基础应用。作为前端开发者,你可能已经在不知不觉中使用了反射的思维,本文将带你从熟悉的前端概念出发,逐步掌握 Kotlin 反射的强大功能。反射基础概念什么是反射?...动态调用方法const methodName = 'toString';console.log(user[methodName]()); // '[object Object]'Kotlin 反射 vs...获取类信息 - 类似 JavaScript 的构造函数检查import kotlin.reflect.*import kotlin.reflect.full....对于前端开发者来说,掌握 Kotlin 反射不仅能帮你更好地理解程序的运行机制,还能为你的技术栈带来新的可能性。记住,反射是工具,不是目的——在合适的场景使用合适的技术,才能发挥最大价值。

    21610

    【Kotlin】集合操作 ② ( MutableList 可变列表集合 | 修改 MutableList 集合的 mutator 函数 )

    文章目录 一、MutableList 可变列表集合 二、修改 MutableList 集合的 mutator 函数 1、添加元素运算符 += 和 删除元素运算符 -= 2、通过 Lambda 表达式筛选要删除的元素...一、MutableList 可变列表集合 ---- 使用 listOf 函数 创建的 List 集合 是 只读列表集合 ; 使用 mutableListOf 函数 创建的 MutableList 集合...是 可变列表集合 ; 调用 MutableList#toList 函数 , 可以 将 可变列表集合 转为 只读列表集合 ; 调用 List#toMutableList 函数 , 可以 将 只读列表集合...转为 只读列表集合 val list: List = mutableList.toList() // 将 只读列表集合 转为 可变列表集合 val mutable...{ // 创建可变列表集合 val mutableList = mutableListOf("Tom", "Jerry") // 通过 Lambda 表达式筛选要操作的元素

    1.4K30

    Linux - top命令监控列表的详细解析

    学习top命令 可看此博文:https://www.cnblogs.com/poloyy/p/12551943.html 统计信息区(系统资源信息区) 前五行,即列表上方的五行 ?...:系统负载,系统运行队列的平均利用率,可认为是可运行进程的平均数;三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值;单核CPU中load average的值=1时表示满负荷状态,多核CPU中满负载的...total:系统全部进程的数量 running:运行状态的进程数量 sleeping:睡眠状态的进程数量 stoped:停止状态的进程数量 zombie:僵尸进程数量 第三行:CPU信息 ?...us:用户空间占用CPU百分比 sy:内核空间占用CPU百分比 ni:已调整优先级的用户进程的CPU百分比 id:空闲CPU百分比,越低说明CPU使用率越高 wa:等待IO完成的CPU百分比 hi:处理硬件中断的占用...答案:空闲内存=空闲内存总量+缓冲内存量 +可用交换区总量 进程信息区(进程列表) ? PID:进程号 USER:运行进程的用户 PR:优先级 NI:nice值。

    3.7K40

    Python的列表怎么用?你会用吗?

    Python的列表怎么用?你会用吗?本文主要介绍了Python中列表(List)的详解操作方法,包含创建、访问、更新、删除、其它操作等,需要的朋友可以参考下。 1.创建列表。...1 for i in List: 2 print i, 4.访问列表中的值 使用下标索引来访问列表中的值,同样你也可以使用方括号的形式截取字符,如下所示: 1 >>> List = [1,...: 1、list.append(obj):在列表末尾添加新的对象 2、list.count(obj):统计某个元素在列表中出现的次数 3、list.extend(seq):在列表末尾一次性追加另一个序列中的多个值...(用新列表扩展原来的列表) 4、list.index(obj):从列表中找出某个值第一个匹配项的索引位置 5、list.insert(index, obj):将对象插入列表 6、list.pop(...obj=list[-1]):移除列表中的一个元素(默认最后一个元素),并且返回该元素的值 7、list.remove(obj):移除列表中某个值的第一个匹配项 8、list.reverse():反向列表中元素

    1.2K20

    前端开发者的 Kotlin 之旅:注解系统解析

    今天,让我们从熟悉的前端概念出发,深入了解 Kotlin 注解系统的强大功能,看看它如何让我们的代码更加优雅和强大。注解基础概念什么是注解?...API)框架配置(类似 Angular 的依赖注入)前端开发中的注解思维在前端开发中,我们其实经常使用类似注解的概念:// TypeScript 装饰器 - 类似 Kotlin 注解@Component...()反射 API编译时处理⚠️ 实验性✅ 成熟的 KSP运行时处理✅ 原生支持✅ 反射支持内置注解 - 类似前端的内置装饰器让我们从 Kotlin 的内置注解开始,就像学习 TypeScript 的内置装饰器一样...: UserRepository) {}}总结注解系统是 Kotlin 元编程的核心技术,它为我们提供了强大的元数据处理能力。...对于前端开发者来说,掌握 Kotlin 注解不仅能帮你更好地理解现代框架的工作原理,还能为你的技术栈带来新的可能性。记住,注解是工具,不是目的——在合适的场景使用合适的技术,才能发挥最大价值。

    28410

    用 Kotlin 的函数式编程 替代 GOF 设计模式用 Kotlin 的函数式编程 替代 GOF 设计模式函数式编程(FP)《Kotlin极简教程》正式上架:

    用 Kotlin 的函数式编程 替代 GOF 设计模式 函数式编程(FP) ---- 非常感谢您亲爱的读者,大家请多支持!!!有任何问题,欢迎随时与我交流~ ---- 值就是函数,函数就是值。...Lisp由约翰·麦卡锡(John McCarthy,1927-2011)在1958年基于λ演算所创造,采用抽象数据列表与递归作符号演算来衍生人工智能。...现代的编程语言对函数式编程都做了不同程度的支持,例如:JavaScript, Coffee Script,PHP,Perl,Python, Ruby, C# , Java 等等(这将是一个不断增长的列表...函数作为Kotlin中的一等公民,可以像其他对象一样作为函数的输入与输出。关于对函数式编程的支持,相对于Scala的学院派风格,Kotlin则是纯的的工程派:实用性、简洁性上都要比Scala要好。...他的项目需要用某种形式语言来编写语句,以记录关于世界的信息,而他感觉列表结构这种形式挺合适,既方便编写,也方便推演。于是就创造了LISP。

    1.4K50
    领券