Kotlin语言入门之-函数的定义和应用

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

成员函数

成员函数是定义在一个类或对象里边的

成员函数可以用 . 的方式调用

泛型函数

函数可以有泛型参数,样式是在函数后跟上尖括号。

未完待续.......

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181111G1CAB400?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券