kotlin学习day10: 枚举和字符串模板
来源:互联网 发布:flash10.0软件下载 编辑:程序博客网 时间:2024/06/01 18:48
Kotlin-枚举
在 Kotlin中,枚举使用关键词enum, enum class对应Java中的enum,Kotlin中,enum 又叫做软关键词(soft keyword):当它出现在 class 之前时,它就有了特殊的含义。但是你可以在其他地方把它当做常规名字来使用。另一方面,class依然是一个关键词。你依然需要把变量命名为(class关键字以外的名
字) clazz 或aClass。像ava那样,枚举类型并不是一个值的列表:你可以在枚举类中声明属性和方法。
声明一个枚举:
enum class Color(val r: Int, val g: Int, val b: Int // 1 声明枚举常量的属性) {RED(255, 0, 0), ORANGE(255, 265, 0), // 2 当每个常量被创建时指定属性值YELLOW(255, 255, 0), GREEN(0, 255, 0), BLUE(0, 0, 255),INDIGO(75, 0, 130), VIOLET(238, 130, 238); // 3 分号(;)在这里是必须的fun rgb() = (r * 256 + g) * 256 + b // 4 在枚举类中定义了一个方法}
枚举常量使用了跟在常规类中声明构造函数和属性同样的语法。当声明每一个枚举常量时,需要为常量提供属性值。注意,这个示例中展示了 Kotlin 语法中唯一一处需要你使用分号的地方:如果你在枚举类中定义了任何方法,(请使用)分号将枚举常量列表从函数定义中分隔开来。
枚举类的简单使用:
模拟我们项目开发中最常用的一种场景:客户端和服务器约定几种类型,然后不同的类型展示不同的样式,在Java中,基本都会使用switch语句或者if-else表达式,但在Kotlin中,我们可以使用更加强大的when表达式,例如:根据输入的color,我们输出color的名字:
fun getColorName(color: Color) = // 1 直接返回一个when表达式 when (color) { // 2 如果颜色等于枚举常量,返回对应的字符串 Color.RED -> "Richard" Color.ORANGE -> "Of" Color.YELLOW -> "York" Color.GREEN -> "Grave" Color.BLUE -> "Battle" Color.INDIGO -> "In" Color.VIOLET -> "Vain"}
上面这样使用了枚举常量的完整名称,指定了Color枚举类名。当然我们也可以直接通过导入常量值的方式来简化代码:
顶层包导入:
import com.example.admin.kotlindemo.Color.*
然后就可以通过名字来使用常量:
fun getWarmth(color: Color) = when (color) { RED, ORANGE, YELLOW -> "warm" // 3 通过名字来使用常量 GREEN -> "neutral" BLUE, INDIGO, VIOLET -> "cold"}
注:为什么我们这里函数体的定义直接使用了when表达式呢?因为kotlin中 when 是一个返回值的表达式,因此一个有表达式主体的函数可以直接返回when表达式
Kotlin-字符串模板
让我们来回忆一下Android开发中最常出现的一种场景:
假设我们有个User类
public class User { private int age; private String name; private int sex; public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getSex() { return sex; } public void setSex(int sex) { this.sex = sex; }}
TextView要显示他的基本信息:
Java我们一般会拼接成字符串或者使用格式化形式,例如:
User user = new User(); String sex; if (user.getSex() == 0) { sex = "男"; } else { sex = "女"; }textView.setText(user.getName() + "的性别是:" + sex);
是不是很麻烦?但是在Kotlin中,我们只需要:
textview.text = "${user.name}的性别是${if(user.sex==0) "男" else "女"}"
以上的示例介绍了叫做字符串模板的特性。在代码中,我们可以像很多脚本语言一样,在字符串值中通过在变量名前面放置$
字符来引用局部变量或者表达式。这相当于Java的字符串串拼接,但是更加紧凑和高效。当然,表达式是静态检查的。如果尝试着去应用一个不存在的变量,代码不会通过编译。如果你需要在一个字符串中包含 $
符号,你可以使用转义功能: println(“$x”) ,打印 $x 但不会讲 x 解析为变量引用。上面的使用字符串模板的时候使用了一个简单的表达式,并且在双引号内部嵌套了双引号,当然也可以仅仅使用表达式或者字符串变量。
- kotlin学习day10: 枚举和字符串模板
- Kotlin之字符串模板
- Kotlin学习之枚举类
- Kotlin学习之-5.10 枚举类
- Kotlin-枚举
- kotlin 中的枚举类和 “when”
- Kotlin 从学习到 Android 第十一章 枚举类、嵌套类 和 密封类
- Kotlin学习笔记--枚举和Sealed Class(密封、印章类型)
- [队内测试Day10.26][P97]T1 字符串+前缀和
- day10-枚举、typedef、宏、声明
- C语言DAY10 - 字符串
- java 基础学习day10
- C++学习笔记 day10
- java学习笔记day10
- Java学习day10
- java学习day10
- Android学习笔记day10
- java学习day10
- Tomcat在Linux上的安装与配置
- Revit API改变风管及管件尺寸(2014)
- PL/SQLDeveloper配置使用说明
- MyEclipse快捷键大全(熟能生巧)
- Linux常用命令
- kotlin学习day10: 枚举和字符串模板
- Android开发环境部署——非常详细的Android开发环境搭建教程(windows 环境)
- Tensorflow中GRU和LSTM的权重初始化
- EPS加载影像问题记录(掩膜换裁切)
- CodeVS 1090 [NOIP 2003] 区间DP 解题报告
- 应用开发者必须了解的Kubernetes网络二三事
- JS获取浏览器或者系统宽高
- 通过form定义参数传值
- Android 版本与 Bluetooth 版本之间的关系