💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
[TOC] ### 函数入门 什么是函数?函数就是具有特定功能的一段独立小程序,函数也称为方法。函数可以将功能代码进行封装,便于对该功能进行复用,**提高了代码的复用性**,函数只有被调用才会被执行。 语法格式如下 ``` 函数声明 函数名称([参数名称:参数类型,参数名称:参数类型]):返回值类型{ 执行语句 … return 返回值 } ``` 接下来对上述语法格式进行说明,具体如下。 * 函数声明:Kotlin中的函数声明使用关键字fun。 * 函数名称:每一个函数都有函数名称,方便在函数调用时使用。 * 参数类型:用于限定调用函数时传入参数的数据类型。 * 参数名称:是一个变量,用于接收调用函数时传入的数据。 * 返回值类型:用于限定函数返回值的数据类型。 * 返回值:被return语句返回的值,该值会返回给调用者。 Kotlin中函数的结构是怎样的呢? ![](https://box.kancloud.cn/ab63c7b8a2c3e62af8ff415df7476a05_574x241.png) * **Kotlin 中的函数使用fun关键字声明** * 函数参数使用 Pascal 表示法定义,即*name*:*type*。参数用逗号隔开。每个参数必须有显式类型: ``` fun powerOf(number: Int, exponent: Int) { …… } ``` 函数有哪些类型呢?函数一共就有4种类型,**无参无返回值、无参有返回值、有参无返回值、有参有返回值**。 ~~~ //无参无返回值 fun myFun1() {     println("这是一个无参无返回值的函数") }   //无参有返回值 fun myFun2(): String {     return"这是一个无参有返回值的函数" }   //有参无返回值 fun myFun3(content: String) {    println("该函数传递的参数为:$content") }   //有参有返回值 fun myFun4(content: String): String {     return content } //当然,没有返回值的函数,也可以明确指定返回值类型为Unit。 //无参无返回值 fun myFun1():Unit{     println("这是一个无参无返回值的函数") }   //有参无返回值 fun myFun3(content: String) :Unit {     println(content) } ~~~ Kotlin相比于Java,在函数方面还有一些增强,比如命名参数,默认参数。 ### Main函数 main函数是kotlin程序的入口函数 计算机运行起来第一个默认找的第一个运行的函数 ~~~ fun main(args: Array<String>):Unit { println("Helloworld") } ~~~ | fun | 函数标识 | | --- | --- | | main | 函数名称 | | args | 形参 | | Array | 形参类型 | | Unit | 返回值类型 | | {println(“Hello World”)} | 函数主体 | * 因为main函数没有返回值,所以可以省略返回类型修饰符,这里使用Unit,相当于Java中的void * 【Kotlin相比于Java不用在语句后面加上分号】 * 【Kotlin相比于Java,在Kotlin中,main方法不用放在一个类里面,可以独立存在】 示例:打印倒菱形 ~~~ fun main(args: Array<String>) { println(" *") println(" ***") println(" *****") println("*******") println(" *****") println(" ***") println(" *") } ~~~ 控制台输出 ![](https://box.kancloud.cn/8e495d820465385894e33defa9c0dae7_333x204.jpg) 发现上述抽取方法,如下代码,效果一样 ~~~ fun main(args: Array<String>) { print1star() print3star() print5star() print7star() print5star() print3star() print1star() } fun print1star() { println(" *") } fun print3star() { println(" ***") } fun print5star() { println(" *****") } fun print7star() { println("*******") } ~~~ ### println函数 println的作用是什么?选中println,按住Ctrl,查看println源码Console.kt可以知道,println()就是输出内容到控制台,并且换行,官方因为注释如下。 ~~~ /** Prints the given [message] and the line separator to the standard output stream. */ ~~~ 查看Console.kt的Structure结构视图,可以得知println()函数接收的参数类型是很丰富的。 * 【Kotlin相比于Java,println()函数可以直接打印数组,集合,这点比Java打印输出便捷一些。】 下面是Structure结构部分截图 ![](https://box.kancloud.cn/7b267f93f72ac630c87435e3552108b5_624x287.png) ### 返回 Unit 的函数 如果一个函数不返回任何有用的值,它的返回类型是`Unit`。`Unit`是一种只有一个值——`Unit`的类型。这个值不需要显式返回: ``` fun printHello(name: String?): Unit { if (name != null) println("Hello ${name}") else println("Hi there!") // `return Unit` 或者 `return` 是可选的 } ``` `Unit`返回类型声明也是可选的。上面的代码等同于: ``` fun printHello(name: String?) { …… } ``` ### idea编辑技巧 ![](https://box.kancloud.cn/ba03c44a4223ac8240d938e46ef591be_555x149.png) fun0、fun1、fun2分别代表0个、1个、2个参数 下面的动图,更加容易看出idea的方便 ![](https://box.kancloud.cn/20f925e3c1eb3fce01ac7a965e740d61_486x310.gif)