kotlin函数

1、函数定义

// 下边定义了main函数
fun main() {
    
}

2、函数的类型

// foo函数定义
fun foo () {} // 对应无参类型 () -> Unit
fun foo (a: Int):String {} // 对应有参类型 (Int) -> String

3、函数的引用

函数的引用类似C语言中的函数指针,可用于函数传递:

fun foo() {} // 如果想引用foo函数,需要使用 ::foo
fun foo(a:String):Any {} // 如果想引用有参foo函数,跟上边一样需要使用 ::foo

// 类中方法的引用,需使用 Foo::bar
class Foo{
    fun bar(){}
}

实际引用例子:

fun foo() {}
fun bar(a:String):Any { return "Hello"}
class Foo {
    fun bar(a:String):Any { return "Hello"}
}
// 引用foo函数
val fn:() -> Unit = ::foo
// 引用bar函数
val bfn:(String) -> Any = ::bar
// 引用Foo类的bar方法
val fooFn:(Foo, String) -> Any = Foo::bar
// ================================================================
// 上边类中的方法引用,也可以用下面这种形式
val f = Foo() // 实例化类
val fbar = f::bar // 使用实例化的对象f::bar方法,也可以引用Foo类中的bar方法
// ================================================================
// 调用
fun main() {
    // 引用foo函数
    val fooFn:(String) ->Unit = ::foo
    // 调用foo函数
    fooFn("1")
}
// 定义foo函数
fun foo(a:String) {
    println(a) // 1
}

相当于js中的:

function foo(a) {
  console.log(a) // 1
}
let afn = foo
afn("1")

4、函数中的变长参数

// 方法定义
fun main() {
    foo("a","b","c")
}
fun foo(vararg a:String) {
    println(a.toList()) // 把传进来的参数转成List [a,b,c]
    // 打印参数
    println(a.joinToString()) // a,b,c
}

kotlin内置的函数参数中很多都是定义的变长参数,如 listOf:

public fun <T> listOf(vararg elements: T): List<T>

5、函数的伪多返回值

多返回值,其实就是返回类型下手,比如返回Pair类型:

// 方法定义
fun main() {
    // 函数调用方式1 -> 解构方式取值
    val (r1, r2) = foo()
    println("r1:$r1,r2:$r2") // r1:a,r2:b
    // 函数调用方式2 -. 正常取值
    val r:Pair<String, String> = foo()
    println("r:$r") // r:(a, b)
}
fun foo():Pair<String,String> {
    return Pair("a", "b")
}

6、函数默认参数

// 方法定义
fun main() {
    foo()
    foo("world")
}
// 定义默认参数
fun foo(a:String = "hello"):Unit {
    println("a:$a") // a:hello  /  a:world
}

7、函数具名参数

// 方法定义
fun main() {
    foo(b="world") // 使用具名参数,指定传给函数的某个参数
}
// 定义默认参数
fun foo(a:String = "hello", b:String):Unit {
    println("$a, $b") // hello, world
}

8、总结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值