Kotlin学习笔记1-2 入门-常用写法
2017-12-24 03:18
351 查看
入门-常用写法
Kotlin官网:Getting Started-IdiomsDTO(可以理解成JavaBean)
具有以下特性的自定义类* get/set方法
* equals()
* hashCode()
* toString()
* copy()
* componentN() 在Other-Destructuring Declarations中讲解
基本上和JavaBean要求一样
方法参数默认值
fun foo(a: Int = 0, b: String = "") { ... }
过滤列表
val positives = list.filter { x -> x > 0 }
上面的例子也可以简写为:
val positives = list.filter { it > 0 }
字符串插值
println("Name $name")
判断实例的类型
when (x) { is Foo -> ... is Bar -> ... else -> ... }
遍历集合键值对
for ((k, v) in map) { println("$k -> $v") }
k,v只是变量名,可以随意定义
区间
for (i in 1..100) { ... } // [1,100] for (i in 1 until 100) { ... } // [0,100) for (x in 2..10 step 2) { ... } // 步进2 for (x in 10 downTo 1) { ... } //倒叙 if (x in 1..10) { ... } //作为if条件
只读List
val list = listOf("a", "b", "c")
只读Map
val map = mapOf("a" to 1, "b" to 2, "c" to 3)
访问Map
println(map["key"]) map["key"] = value
延迟初始化(Lazy)
val p: String by lazy { // compute the string }
拓展方法
fun String.spaceToCamelCase() { ... } "Convert this to camelcase".spaceToCamelCase()
创建单例
object Resource { val name = "Name" }
null相关
val files = File("Test").listFiles() //if(!=null) println(files?.size) //if(!=null)else println(files?.size ?: "empty") val values = ... //if(==null)执行语句 val email = values["email"] ?: throw IllegalStateException("Email is missing!") //冒号后面在value为null时执行 //if(!=null)执行语句 value?.let { ... // value不为null时执行 } //if(!=null)转换 val mapped = value?.let { transformValue(it) } ?: defaultValueIfValueIsNull
返回when表达式的值
fun transform(color: String): Int { return when (color) { "Red" -> 0 "Green" -> 1 "Blue" -> 2 else -> throw IllegalArgumentException("Invalid color param value") } }
try-catch表达式
fun test() { val result = try { count() } catch (e: ArithmeticException) { throw IllegalStateException(e) } // Working with result }
if表达式
fun foo(param: Int) { val result = if (param == 1) { "one" } else if (param == 2) { "two" } else { "three" } }
用Builder的形式调用无返回值的方法
fun arrayOfMinusOnes(size: Int): IntArray { return IntArray(size).apply { fill(-1) } }
这里apply函数是Any类的,任何对象都有,返回值为自身,可以在apply中调用对象的void方法,apply函数返回自身使builder继续
只有一个表达式的方法
fun theAnswer() = 42
上面这个例子等价于
fun theAnswer(): Int { return 42 }
when表达式的例子同理,再粘一遍
fun transform(color: String): Int = when (color) { "Red" -> 0 "Green" -> 1 "Blue" -> 2 else -> throw IllegalArgumentException("Invalid color param value") }
使用with关键字直接调用对象的复数个方法
class Turtle { fun penDown() fun penUp() fun turn(degrees: Double) fun forward(pixels: Double) } val myTurtle = Turtle() with(myTurtle) { //draw a 100 pix square penDown() for(i in 1..4) { forward(100.0) turn(90.0) } penUp() }
Java 7’s try with resources
val stream = Files.newInputStream(Paths.get("/some/file.txt")) stream.buffered().reader().use { reader -> println(reader.readText()) }
获取方法泛型的简便写法
// public final class Gson { // ... // public <T> T fromJson(JsonElement json, Class<T> classOfT) throws JsonSyntaxException { // ... inline fun <reified T: Any> Gson.fromJson(json: JsonElement): T = this.fromJson(json, T::class.java)
使用可以为null的Boolean对象
val b: Boolean? = ... if (b == true) { ... // b不为null且为true时执行 } else { // `b` 为false或null时执行 }
相关文章推荐
- [原]java专业程序代写(qq:928900200),学习笔记之基础入门<SQL_Server_常用查询>(二十二)
- [学习笔记]git学习笔记之入门与常用git命令
- 【零基础入门学习Python笔记006】Python之常用操作符
- UnityShader入门精要学习笔记(三):Unity内置cg include文件与常用语义
- Kotlin学习笔记1-1 入门-语法基础
- Oracle 学习笔记2:几个入门常用命令
- android 入门学习笔记 Button 常用的弹窗效果code
- Docker 入门学习笔记二:常用命令
- [Kotlin&Anko开发Android入门学习笔记]-02Kotlin如何使用Android第三方库
- Kotlin 入门基础语法学习笔记
- Kotlin学习笔记1-3 入门-代码规范
- JavaScript学习笔记 - 入门篇(2)- 常用互动方法
- Android入门学习笔记,主要是activity和intent,以及eclipse常用快捷方式
- JSP经典学习笔记(包含各种入门常用语法)
- [Kotlin&Anko开发Android入门学习笔记]-01使用Kotlin创建Activity活动
- JSP经典学习笔记(包含各种入门常用语法)
- java 从零开始,学习笔记之基础入门<SQL_Server_常用查询>(二十二)
- 入门Demo---SpringMVC学习笔记(二)
- 梓益C语言学习笔记之常用字符串操作(sscanf & strtok)
- 一个 Android程序员的小程序入门学习笔记『二』(template 模版的使用注意)