kotlin_函数定义与调用
来源:互联网 发布:10月国民经济数据 编辑:程序博客网 时间:2024/05/16 10:58
1.创建集合
setOf()
,listOf()
,hashMapOf()
集合方法:.last()
,.max()
等
2.优化函数
背景:集合输出格式
a.基本实现:
fun <T> joinToString( collection: Collection<T>, separator: String, prefix: String, postfix: String):String { var result = StringBuilder(prefix) for((index,element) in collection.withIndex()){ if(index > 0) result.append(separator) result.append(element) } result.append(postfix) return result.toString()}
b.命名参数
println(joinToString(listOf(1,21,3),separator = ";", prefix = "(",postfix = ")"))
c.默认参数值
fun <T> joinToString( collection: Collection<T>, separator: String = ",", prefix: String ="", postfix: String = ""):String
3.扩展函数和属性
a.给String扩展lastChar()函数
fun String.lastChar(): Char = get(length-1)
b.导入和扩展函数
冲突情况下导入包可以使用as
对扩展函数重命名
c.java使用扩展函数
将接受者对象作为第一个参数给扩展函数
d.作为扩展函数的工具函数
fun <T> Collection<T>.joinToString( collection: Collection<T>, separator: String = ",", prefix: String ="", postfix: String = ""):String { var result = StringBuilder(prefix) for((index,element) in collection.withIndex()){ if(index > 0) result.append(separator) result.append(element) } result.append(postfix) return result.toString()}
e.扩展函数不可重写
f.扩展属性
扩展String属性
val String.lastChar: Char get() = get(length-1)
扩展可变属性
var StringBuilder.lastChar: Char get() = get(length-1) set(value: Char) { this.setCharAt(length - 1, value) }
4.处理集合
a.可变参数
使用vararg
让函数支持任意数量参数
fun <T> listOf(vararg values: T): List<T> { }
使用展开运算符*
来传递数组
var list = listOf("args:", *args) println(list)
b.中缀调用和解构声明
val map = mapOf(1 to "one",2 to "two",3 to "three")
其中to是特殊的函数调用,叫做中缀调用
在中缀调用中,没有添加额外的分隔符,函数名称是直接放在目标对象名称和参数之间的。
即1 to "one"
和 1 to("one")
等价
要允许使用中缀符号调用函数,需要使用infix
修饰符来标记它。
infix fun Any.to(other: Any) = Pair(this,other)
to函数返回一个Pair类型的对象。
Pair是泛型,可以以下生成Pair称之为解构声明
val (number, name) = 1 to "One"
5.字符串和正则表达式
a.分割字符串
kotlin的split函数有多个重载。用来承载正则表达式的值需要一个Regex类型,而不String。
println("12.345-6.A".split("\\.|-".toRegex()))
等价的情况
println("12.345-6.A".split(".","-"))
a.使用string的扩展函数来解析文件路径
fun parsePath(path: String) { val direcory = path.substringBeforeLast("/") val fullName = path.substringAfterLast("/") val fileName = fullName.substringBeforeLast(".") val extension = fullName.substringAfterLast(".") println("Dir:$direcory,name: $fileName, ext: $extension ")}
b.使用正则表达式解析文件路径
正则式写在三重引号字符串中,不需要对特殊字符转义
fun parsePath(path: String) { val regex = """(.+)/(.+)\.(.+)""".toRegex() val matchResult = regex.matchEntire(path) if(matchResult != null) { val (direcory, fileName, extension) = matchResult.destructured println("Dir: $direcory, name: $fileName, ext: $extension") }}
6.局部函数和扩展
即可以在函数里嵌套函数,外层函数调用内层函数。内层函数可以使用外层参数。
阅读全文
0 0
- kotlin_函数定义与调用
- Kotlin_函数的定义与用法
- Kotlin_函数的范围
- 变量定义与函数调用
- 函数的定义与调用
- JavaScript 函数定义与调用
- 函数的定义与调用
- 过程、函数的定义与调用
- 第十一周 函数的定义与调用
- 九、函数的定义与调用
- JS函数的定义与调用方法
- C++函数的定义与调用
- Delphi 函数嵌套 定义与调用
- JS函数的定义与调用方法
- python04-函数的定义、调用与递归
- javascript笔记:函数的定义与调用
- 3.1 函数的定义与调用
- JS函数的定义与调用方法
- 剑指offer系列(5)——重建二叉树
- 14个你可能不知道的JavaScript调试技巧
- 炸锅了!Google称2029年人类开始实现永生不死!疾病,衰老,痛苦将彻底消失!?
- 粉丝回馈 | 用30天换来了这辈子独一无二的纪念
- mac下定时执行任务
- kotlin_函数定义与调用
- 【C++】深入理解模板
- 今天,送你一份交通行业最全数据集(共享单车、自动驾驶、网约出租车、交通信号识别)
- 100 万在中国不同地方能活多久?
- 基于Atlas实现mysql读写分离(2)--读写分离
- 极光推送
- 杭电oj 1257 流弊导弹
- 关系型数据库到非关系型数据库
- 前向星存储方式