1. 可变参数
    在kotlin中创建一个集合,可以往其中传递任意数量的参数进去。

    1
    fun listOf<T>(vararg values:T):List<T>{...}

    在kotlin中,是直接使用vararg来说修饰可变参数的。
    而且kotlin和java的另一个区别就是java中,你可以按照原样传递某个数组进去,而kotlin需要你显式的对这个数组进行解包操作。例如

    1
    2
    3
    val list1 = listOf("1","2")
    val list2 = listOf(*list1,"3")
    //最后list2的结果为["1","2","3"]

    这个功能被称为展开运算符

  2. 中缀调用和解构声明
    在kotlin中,创建一个map

    1
    val map = mapOf(1 to "One",2 to "Two")

    这里的to就是不是一直欧冠你内置的结构,而是一种特殊的函数调用,被称为中缀调用。
    在kotlin中他有一个有与java不同的类,Pair,他用来表示一对元素而且他和to都用到了泛型。

    1
    2
    1.to("one")//一般to函数的调用
    1 to "one"//使用中缀符号调用to函数

    如果需要使用中缀符号,那么需要使用infix修饰符来标记

    1
    infix fun Any.to(other:Any) = Pair(this,other)

    而解构声明就是把把Pair展开,用来初始化两个变量

    1
    val (number,name) = 1 to "one"

    同样的,对于使用withIndex的数列也一样可行
    如:

    1
    2
    3
    for((index,element) in collection.withIndex()){
    ...
    }
  3. 字符分割和正则表达式
    相比与java中的split分割方法,kotlin对他进行了重写,使他更为直观。

    • 可以直接通过任意数量的纯文本字符串进行分割,也就是直接调用split方法
    • 采用正则表达式进行分割,kotlin在这引入了一个新类型,Regex,他可以将字符串转化为正则表达式,然后在split()函数中传入这个Regex,例如:
      1
      2
      println("12.346-A".split("\\.|-".toRegex()))
      //输出结果为[12,346,A]
      \.是用来转义的,因为.在正则中表示,任意的字面量
  4. 局部函数
    他的简单理解就是在函数中,将重复的代码提取成一个函数内的函数,化简代码。
    而且这个局部函数也可以扩展到外面。
    做了扩展的局部函数保证了,即便是同一个类,只有在某些时候,才能使用他的方法,比如验证过程,日志过程,就不需要该类在任意时刻都被用到