函数的定义和调用
程序员文章站
2024-03-17 16:08:46
...
3.1 创建集合
kotlin没有采用自己的集合类,而是采用的标准的java集合类。在java集合类的基础上新增了方法
val list = arrayListof(1,3,56)
//扩展方法:数字列表的最大值
val max = list.max()
//扩展方法:最后一个元素
val last = list.last()
3.2 函数调用
命名参数
当调用一个kotlin定义的函数时,可以显示地表明一些参数的名称。
如果在调用一个函数时,指明了一个参数的名称,为了避免混淆,那它之后的所有参数都需要标明名称。默认参数值
@JvmOverloads//注解是可以生成java 的重载函数,其中collection是必传参数
fun <T> joinToString(collection: Collection<T>, separator: String=",", prefix: String="",
postfix: String="") :String{
val result = StringBuilder(prefix)
for ((index, element) in collection.withIndex()) {
if (index > 0) result.append(separator)
result.append(element)
}
result.append(postfix)
return result.toString()
}
- 清除静态工具类:顶层函数和属性
顶层函数:函数放到代码文件的顶层,该函数不用从属于任何的类
//kotlin生成的类的名称,对应于包含函数的文件的名称
//这个文件中的所有顶层函数便以为这个类的静态函数
//文件名为Hello.kt的文件
fun sum(a:Int,b:Int):Int = a+b
//在java中调用
HelloKt.sum(1,2);
顶层属性:和顶层函数一致
//const 适用于所有的基本数据类型、以及String类
const val KEY_PASS = "pass"
//相当于java中的
public static final String KEY_PASS = "pass";
3.3 给别人的类添加方法:扩展函数和属性
导入和扩展函数
从java中调用扩展函数
扩展函数是静态函数,它把调用对象作为了它的第一个参数
//在kotlin声明扩展函数
fun String.lastChar():Char = get(length-1)
//在java中调用
HelloKt.lastChar("abc");
- 作为扩展函数的工具函数
- 不可重写的扩展函数
扩展函数不可以被重写,以为它是并不是类的一部分,是声明在类之外的 - 扩展属性
3.4 处理集合:可变参数、中缀调用和库的支持
- 扩展Java集合的API
- 可变参数:让函数支持任意数量的参数
vararg:修饰符,修饰参数
*:展开运算符 - 键值对的处理:中缀调用和结构声明
to函数:中缀调用
3.5 字符串和正则表达式的处理
- 分割字符串
- 正则表达式和三重引号的字符串
- 多行三重引号的字符串
3.6 让你的代码更整洁:局部函数和扩展
局部函数:函数中定义的函数。可以避免重复的代码。
局部函数内可以访问外层函数的参数。
扩展函数也可以被声明为局部函数。
小结
- Kotlin没有定义自己的集合类,在Java的基础上提供了丰富的API
- Kotlin可以给函数的参数定义默认值,降低了重载函数的必要性
- Kotlin允许函数和属性在文件中声明。
- Kotlin可以用扩展函数和属性来扩展任何类的API
- 中缀调用,提供了处理单个参数的,类似调用运算符方法的简明语法
- Kotlin为普通字符串和正则表达式都提供了大量的处理函数
- 三重引号,解决了java中转义和字符串连接问题
- 局部函数
上一篇: Python十个实例(二)
下一篇: [蓝桥杯][基础练习VIP]2n皇后问题