Kotlin语言入门之--函数的定义和应用
函数声明
在 kotlin 中用关键字 fun 声明函数:
函数用法
通过传统的方法调用函数
通过 . 调用成员函数:
中缀符号
在满足以下条件时,函数也可以通过中缀符号进行调用:它们是成员函数或者是扩展函数只有一个参数 使用 infix 关键词进行标记:
参数
函数参数是用 Pascal 符号定义的 name:type。参数之间用逗号隔开,每个参数必须指明类型。
默认参数
函数参数可以设置默认值,当参数被忽略时会使用默认值。这样相比其他语言可以减少重载。
默认值可以通过在type类型后使用 = 号进行赋值
命名参数
在调用函数时可以参数可以命名。这对于那种有大量参数的函数是很方便的.
下面是一个例子:
我们可以使用默认参数
reformat(str)
然而当调用非默认参数是就需要像下面这样:
使用命名参数我们可以让代码可读性更强:
如果不需要全部参数的话可以这样:
注意,命名参数语法不能够被用于调用Java函数中,因为Java的字节码不能确保方法参数命名的不变性。
不带返回值的参数
如果函数不会返回任何有用值,那么他的返回类型就是 Unit . Unit 是一个只
有唯一值 Unit 的类型.这个值并不需要被直接返回:
Unit 返回值也可以省略,比如下面这样:
单表达式函数
当函数只返回单个表达式时,大括号可以省略并在 = 后面定义函数体
在编译器可以推断出返回值类型的时候,返回值的类型可以省略:
明确返回类型
下面的例子中必须有明确返回类型,除非他是返回 Unit 类型的值,Kotlin 并不会对函数体重的返回类型进行推断,因为函数体中可能有复杂的控制流,他的返回类型未必对可见(甚至对编译器而言也有可能是不可见的):
变长参数
函数的参数(通常是最后一个参数)可以用 vararg 修饰符进行标记:
标记后,允许给函数传递可变长度的参数:
只有一个参数可以被标注为 vararg 。加入 vararg 并不是列表中的最后一个参数,那么后面的参数需要通过命名参数语法进行传值,再或者如果这个参数是函数类型,就需要通过lambda法则.
当调用变长参数的函数时,我们可以一个一个的传递参数,比如 asList(1, 2,3) ,或者我们要传递一个 array 的内容给函数,我们就可以使用 * 前缀操作符:
函数范围
Kotlin 中可以在文件顶级声明函数,这就意味者你不用像在Java,C#或是Scala一样创建一个类来持有函数。除了顶级函数,Kotlin 函数可以声明为局部的,作为成员函数或扩展函数。
局部函数
Kotlin 支持局部函数,比如在一个函数包含另一函数。
局部函数可以访问外部函数的局部变量(比如闭包)
局部函数甚至可以返回到外部函数 qualified return expressions
成员函数
成员函数是定义在一个类或对象里边的
成员函数可以用 . 的方式调用
泛型函数
函数可以有泛型参数,样式是在函数后跟上尖括号。
未完待续.......
领取专属 10元无门槛券
私享最新 技术干货