快速入门Kotlin语言-----学习笔记(三)

一、创建集合

//使用如下代码可以初始化一个List集合:
val list = listOf("Apple", "Banana", "Orange", "Pear", "Grape")
//使用如下代码可以初始化一个Set集合:
val set = setOf("Apple", "Banana", "Orange", "Pear", "Grape")
//使用如下代码可以初始化一个Map集合:
val map = mapOf("Apple" to 1, "Banana" to 2, "Orange" to 3, "Pear" to 4, "Grape" to 5)

二、lambda表达式

Lambda就是一小段可以作为参数传递的代码。正常情况下,我们向某个函数传参时只能传入变量,而借助Lambda却允许传入一小段代码。

我们来看一下Lambda表达式的语法结构:

{参数名1: 参数类型, 参数名2: 参数类型 -> 函数体}

首先最外层是一对大括号,如果有参数传入到Lambda表达式中的话,我们还需要声明参数列表,参数列表的结尾使用一个->符号,表示参数列表的结束以及函数体的开始,函数体中可以编写任意行代码,并且最后一行代码会自动作为Lambda表达式的返回值。

三、集合的函数式API

以最常见的map为例:

用于将集合中的每个元素都映射成一个另外的值,映射的规则在Lambda表达式中指定,最终生成一个新的集合

//list里的所有字母大写
fun main() {
    val list = listOf("Apple", "Banana", "Orange", "Pear", "Grape", "Watermelon")
    val newList = list.map({ fruit: String -> fruit.toUpperCase() })
    for (fruit in newList) {
        println(fruit)
    }
}

当Lambda参数是函数的最后一个参数时,可以将Lambda表达式移到函数括号的外面。

如果Lambda参数是函数的唯一一个参数的话,还可以将函数的括号省略。

由于Kotlin拥有出色的类型推导机制,Lambda表达式中的参数列表其实在大多数情况下也不必声明参数类型。

当Lambda表达式的参数列表中只有一个参数时,也不必声明参数名,而是可以使用it关键字来代替。

因此,可以简写为:

val newList = list.map { it.toUpperCase() }

四、空指针检查

Kotlin默认所有的参数和变量都不可为空!

可为空的类型系统,就是在类名的后面加上一个问号。如:Int? ,Person?,自定义类是类名后加问号即可为空。

使用可为空的类型系统时,需要在编译时期就把所有的空指针异常都处理掉才行。

Kotlin提供了一系列的辅助工具,使开发者能够更轻松地进行判空处理。
?. 操作符表示当对象不为空时正常调用相应的方法,当对象为空时则什么都不做。比如:

if (a != null) {
    a.doSomething()
}
//等价于
a?.doSomething()


val c = if (a ! = null) {
    a
} else {
    b
}
//等价于
val c = a ?: b


//结合使用?.操作符和let函数也可以对多次重复调用的某个变量统一进行判空处理:
fun doStudy(study: Study?) {
    study?.let {
        it.readBooks()
        it.doHomework()
    }
}

五、字符串内嵌表达式

Kotlin中字符串内嵌表达式的语法规则如下:

"hello, ${obj.name}. nice to meet you!"

当表达式中仅有一个变量的时候,还可以将两边的大括号省略:

"hello, $name. nice to meet you!"

参数可以设置默认值,设有默认值的参数在调用时可以不传,使用的是默认值。

fun printParams(num: Int, str: String = "hello") {
    println("num is $num , str is $str")
}

 

跟着郭神学kotlin!

https://www.ituring.com.cn/book/tupubarticle/30209

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值