欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

函数的定义和调用

程序员文章站 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 函数调用

  1. 命名参数
    当调用一个kotlin定义的函数时,可以显示地表明一些参数的名称。
    如果在调用一个函数时,指明了一个参数的名称,为了避免混淆,那它之后的所有参数都需要标明名称。

  2. 默认参数值

@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()
}
  1. 清除静态工具类:顶层函数和属性
    顶层函数:函数放到代码文件的顶层,该函数不用从属于任何的类
//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 给别人的类添加方法:扩展函数和属性

  1. 导入和扩展函数

  2. 从java中调用扩展函数
    扩展函数是静态函数,它把调用对象作为了它的第一个参数

//在kotlin声明扩展函数
fun String.lastChar():Char = get(length-1)

//在java中调用
HelloKt.lastChar("abc");
  1. 作为扩展函数的工具函数
  2. 不可重写的扩展函数
    扩展函数不可以被重写,以为它是并不是类的一部分,是声明在类之外的
  3. 扩展属性

3.4 处理集合:可变参数、中缀调用和库的支持

  1. 扩展Java集合的API
  2. 可变参数:让函数支持任意数量的参数
    vararg:修饰符,修饰参数
    *:展开运算符
  3. 键值对的处理:中缀调用和结构声明
    to函数:中缀调用

3.5 字符串和正则表达式的处理

  1. 分割字符串
  2. 正则表达式和三重引号的字符串
  3. 多行三重引号的字符串

3.6 让你的代码更整洁:局部函数和扩展

局部函数:函数中定义的函数。可以避免重复的代码。
局部函数内可以访问外层函数的参数。
扩展函数也可以被声明为局部函数。

小结

  1. Kotlin没有定义自己的集合类,在Java的基础上提供了丰富的API
  2. Kotlin可以给函数的参数定义默认值,降低了重载函数的必要性
  3. Kotlin允许函数和属性在文件中声明。
  4. Kotlin可以用扩展函数和属性来扩展任何类的API
  5. 中缀调用,提供了处理单个参数的,类似调用运算符方法的简明语法
  6. Kotlin为普通字符串和正则表达式都提供了大量的处理函数
  7. 三重引号,解决了java中转义和字符串连接问题
  8. 局部函数