版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ITxiaodong/article/details/90613800
来源 kotlin 实战第三章顺手记录的笔记。不过说真的老外写的书,逻辑真的很强,特别是从普通写法到扩展函数的写法介绍。
处理集合
使用 listOf 函数来创建 list:
val list = listof("1","2","3")
使用 mapOf 函数来创建 map:
val map= mapOf(1 to "one", 7 to "seven", 53 to "fifty-three")
分割字符串
Java
中:"12.345-6.A" .split("·")
,期望得到[12, 345-6, A]
,但是结果为空,在 kotlin
中: "12.345-6.A".split('.','-')
解决了Java 中的这个问题。
命名参数
方法中定义了 user_type
可通过 user_type="1"
命名参数,可不需要位置相符
函数默认参数
方法中定义了 user_type
可通过user_type="0"
设置默认参数为,可不需要位置相符
顶层函数(替代 Util )
不从属于任何类,相当于静态方法
顶层属性(不常用)
不从属于任何类,相当于静态变量
局部函数:避免重复
抽取,例如登录校验,用户不为空,密码不为空,邮箱不为空…,可抽取出来做局部函数,然后再抽取出来作为扩展函数
- 原始校验:
class User(val id: Int, val name: String, val address: String)
fun saveUser(user: User) {
if (user. name. isEmpty () ) {
throw IllegalArgumentException ( I can`t t save user $ {user. id} : empty Name")
}
if (user. address. isEmpty ()) {
throw IllegalArgumentException( ”Can’t save user ${user.id}: empty Address")
}
// 保存 user 到数据库
}
使用:
saveUser(User (1,””,””))
结果
java.lang.IllegalArgumentException: Can ’t save user 1: empty Name
- 抽出局部函数:
class User(val id: Int, val name: String, val address: String)
fun saveUser(user: User) {
fun validate(user: User, value: String, fieldName: String){
if (value isEmpty()) {
throw IllegalArgumentException( can`t save user ${user . id}: empty $fieldName")
}
}
使用:
validate(user, user.name, "Name")
validate(user, user.address , "Address")
// 保存 user 到数据库
}
- 抽出扩展函数
class User(val id: Int, val name: String, val address: String)
fun User.validateBeforeSave() {
fun validate(value: String, fieldName: String) {
if (value. isEmpty ()) {
throw IllegalArgumentException("Can`t save user $id: empty $fieldName ")
}
}
validate(name, "Name")
validate(address, "Address")
}
fun saveUser(user:User){
user.validateBeforeSave()
// 保存 user 到数据库
}