Kotlin开发安卓APP笔记-函数和lambda表达式(1)

函数声明

在Kotlin中,使用“fun”关键字声明函数:

    fun bestmk(i:Int):String{
        return "猫客技术论坛bestmk.cn建站$i 年啦!"
    }

可以看出,kotlin函数参数是用 Pascal 符号定义的 name:type。参数之间用逗号隔开,每个参数必须指明类型。函数参数可以有默认参数。这样相比其他语言可以减少重载。
函数使用方法和Java类似

var result=bestmk(1)
//返回猫客技术论坛bestmk.cn建站1年啦!

对于类成员函数,通过类实例加“.”方式使用:
例如KotlinUtils().bestmk(1)

函数的默认参数

和Java不同的是,kotlin函数可以设置默认参数,通过“=”符号添加默认值,例如

fun setYear(year:Int=10){
    //....
}

如果通过继承重写的函数,默认是会带有父类函数的默认参数;且重写的函数不能在设置默认值。

open class A {  
    open fun foo(i: Int = 10) { ... }  
}  

class B : A() {  
override fun foo(i: Int) { ... }  // no default value allowed  
//override fun foo(i: Int = 2) { ... } //error,父类函数已设置默认值,重写函数,不能再设置默认值。  
}  

命名参数

调用函数时,可以给传入的参数添加参数名;当一个函数有多个参数时,非常有用。如,有如下的一个函数:

fun reformat(str: String,  
             normalizeCase: Boolean = true,  
             upperCaseFirstLetter: Boolean = true,  
             divideByCamelHumps: Boolean = false,  
             wordSeparator: Char = ' ')  {  
...  
}  

则可以通过该方式调用:reformat(str)
当该函数的所有参数都没有设置默认值,则需要这样调用:reformat(str, true, true, false, '_')
此时,可以在调用函数时,给传入的参数添加参数名,增加可读性:

reformat(str,  
    normalizeCase = true,  
    upperCaseFirstLetter = true,  
    divideByCamelHumps = false,  
    wordSeparator = '_'  
  )  

只需要传入部分参数情况:

reformat(str, wordSeparator = '_')  

注意:调用Java方法的时候不可以使用命名参数方式,Java不支持这种语法。。

返回“Unit”类型函数

如果一个函数不需要返回任何有效值,那么它的返回类型为“Unit”。“Unit”类型只有一个值,即“Unit”。另,可以不显示返回Unit:

 fun printHello(name: String?): Unit {  
    if (name != null)  
        println("Hello ${name}")  
    else  
        println("Hi there!")  
    // `return Unit` or `return` is optional  
}  

返回的“Unit”也是可选的,下面的方式等同于返回“Unit”类型:

fun printHello(name: String?) {  
    ...  
} 

单表达式函数(Single-Expression functions)

当函数返回一个单表达式的值,可以省略“{ }”直接将该单表达式使用“=”跟在函数定义的后面:

fun double(x: Int): Int = x * 2   

今天先到这里。。下次在更新

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值