Android 开发上手 Kotlin - 集合和函数

版权声明:本文为博主原创文章,未经博主允许不得转载。 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 到数据库
}

猜你喜欢

转载自blog.csdn.net/ITxiaodong/article/details/90613800