- 课程名称:一课掌握Kotlin 突破开发语言瓶颈
- 章节名称:
- 第3章:内置类型
- 3-5函数
- 第3章:内置类型
- 讲师姓名:bennyhuo
- 时间:2022-08-010 17:50
课程内容
一等公民:函数。这是因为函数有自己的类型,可以赋值,传递,并在合适的条件下调用
-
函数返回类型如为Unit,相当于Java的void
-
要区分函数与方法
- 方法可以认为是函数的一种特殊类型
- 从形式上,有receiver的函数即为方法
- 所以说,方法就是外面套了一个类的函数,必须要通过这个类的实例来调用这个方法,这个实例就是receiver
-
函数类型
(参数列表) -> 函数返回类型
Receiver.(参数列表) -> 函数返回类型
,也可写成(receiver, 参数列表) -> 函数返回类型
-
函数的引用
-
类似C语言中的函数指针,可用于函数传递
函数声明 函数引用 fun foo() {} ::foo class Foo { fun bar(p0:String,p1:Long) : Any {……}}
Foo::bar val foo = Foo()
val m:(String, Long) -> Any = foo::bar
receiver没有的情况 val m0: Function3<Foo, String, Long, Any>
Foo::bar (Foo, String, Long) -> Any
Foo.(String, Long) -> Any
Function3<Foo, String, Long, Any>
Foo::ba
-
-
变长参数
fun main(args: Array<String>) { println(args.contentToString() }
fun main(vararg args: String) { println(args.contentToString())// 本质上就是IntArray类型 }
listOf(1, 2, 3)// 就是一个变长参数应用的例子
-
多返回值
fun multiReturnValues(): Triple<Int, Long, Double> { return Triple(1, 3L, 4.0) } val (a, b, c) = multiReturnValues()// 用解构方式获取返回值
-
默认参数(要作为参数列表中的最后一个)
fun defaultParameter(x: Int, y: String, z: Long = 0L) {//z有默认值 …… } defaultParameter(5, "abc")
-
具名参数
fun defaultParameter(x: Int = 5, y: String, z: Long = 0L) { …… } defaultParameter(y = "Hello")// 指定形参的名字
学习心得
本章开始的函数学习进入到难度较高层次,函数与方法区分,函数可以继续被抽象出类型,都是很有点让匪夷所思的,但反复看很多次,也有了感觉,对这种抽象也可以有了自己的理解,这样才会对加深理解有帮助。