博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
kotlin基本语法(二)
阅读量:5153 次
发布时间:2019-06-13

本文共 2827 字,大约阅读时间需要 9 分钟。

函数的默认参数

fun foo(a: Int = 0,b: String = ""){......}

过滤list

var positives = list.filter {x -> x > 0}

或者可以更短

var positives = list.filter { it > 0 }

字符串内插

println("Name $name")

判断类型

when (x) {        is Foo //-> ……      is Bar //-> ……       else   //-> ……}

遍历map/pair型list

for ((k, v) in map) {       println("$k -> $v") }

k、v可以改成任意名字。

使用区间

for (i in 1..100) { …… }  // 闭区间:包含 100for (i in 1 until 100) { …… } // 半开区间:不包含 100for (x in 2..10 step 2) { …… }for (x in 10 downTo 1) { …… }if (x in 1..10) { …… }

只读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

延迟属性

val p: String by lazy {        // 计算该字符串 }

扩展函数

fun String.spaceToCamelCase() { …… }"Convert this to camelcase".spaceToCamelCase()

创建单例

object Resource {        val name = "Name" }

if not null 缩写

val files = File("Test").listFiles()println(files?.size)

if not null and else 缩写

val files = File("Test").listFiles()println(files?.size ?: "empty")

if null 执行一个语句

val values = …… val email = values["email"] ?: throw IllegalStateException("Email is missing!")

在可能会空的集合中取第一个元素

val emails = …… // 可能会是空集合 val mainEmail = emails.firstOrNull() ?: ""

 if not null 执行代码

val value = ……value?.let {    …… // 代码会执⾏到此处, 假如data不为null }

映射可空值(如果非空的话)

val value = ……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)            }        // 使⽤ result }

“if”表达式

fun foo(param: Int) {    val result = if (param == 1) {        "one"        } else if (param == 2) {        "two"        } else {         "three"       } }

返回类型为Unit的方法的Builder风格用法

fun arrayOfMinusOnes(size: Int): IntArray {        return IntArray(size).apply { fill(-1) } }

单表达式函数

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) { // 画⼀个 100 像素的正⽅形    penDown()    for(i in 1..4) {        forward(100.0)        turn(90.0)    }     penUp() }

使用可空布尔

val b: Boolean? = …… if (b == true) {    …… } else {    // `b` 是 false 或者 null }

交换两个变量

var a = 1var b = 2 a = b.also { b = a }

 

转载于:https://www.cnblogs.com/zxpy/p/10528496.html

你可能感兴趣的文章
LintCode-Backpack
查看>>
查询数据库锁
查看>>
我对于脚本程序的理解——百度轻应用有感
查看>>
面试时被问到的问题
查看>>
注解小结
查看>>
list control控件的一些操作
查看>>
判断字符串在字符串中
查看>>
oracle 创建暂时表
查看>>
201421410014蒋佳奇
查看>>
Xcode5和ObjC新特性
查看>>
Centos 7.0 安装Mono 3.4 和 Jexus 5.6
查看>>
CSS属性值currentColor
查看>>
Real-Time Rendering 笔记
查看>>
实验四2
查看>>
多路复用
查看>>
Python数据可视化之Pygal(雷达图)
查看>>
Java学习笔记--字符串和文件IO
查看>>
转 Silverlight开发历程—(画刷与着色之线性渐变画刷)
查看>>
在js在添版本号
查看>>
sublime3
查看>>