kotlin 函数笔记

1,507 阅读1分钟

1.函数无返回类型 为Unit. 返回值有Noting类型。 2.可以设置参数默认值。

private fun doSomething(flag:Boolean,age:Int =2):String{
    return "result"+age+flag
}

3.传入参数位置是可以变化的:

fun main(){
    doSomething(true)
    doSomething(true,1)
    doSomething(age = 1,flag = true)
}
private fun doSomething(flag:Boolean,age:Int =2):String{
    return "result"+age+flag
}

4.特殊函数。反引号

fun main(){
`fun`()
}
fun `fun` (){
    println("我是特殊函数")
}

5.匿名函数,无需retrun 返回最后一行代码结果

println({a: Int, b: String ->
    "Welcome to SimVillage, $a!(copyright $b)"
}(2019, "Benny"))

6.匿名函数类型推断。下面是匿名函数,返回值为String.参数类型也可以省略。

val bessingFunction={a:String,b:Int ->
    "我是匿名函数"
}
print(bessingFunction("ss",1))

7.函数以匿名函数为参数。

fun main(){
    val bessingFunction ={a:Int,b:Int ->
        a+b
    }
   A("小明",bessingFunction)
}
fun A(name:String,B:(Int,Int)->Int){
    print("$name 1+1的答案:"+B(1,1))
}
//输出结果为:
//小明 1+1的答案:2

8.函数以函数为参数,两个冒号。

fun main(){
 A("小明",::B)
}
fun B(a:Int,b:Int):Int{
   return a+b
}
fun A(name:String,B:(Int,Int)->Int){
    print("$name 1+1的答案:"+B(1,1))
}

8.infine 内联函数,没什么用。不会新建对象,对内存好。
9.函数返回类型为函数

fun main(){
    val getDiscountWords:(String)->String =configDisountWords()
    println(getDiscountWords("牙膏"))
}

 fun configDisountWords():(String)->String{
     return {name:String ->
         "他的名字$name"
     }
 }

9.闭包(写一个函数和一个变量容易重名)fun 里面定义匿名fun1 fun1可以使用fun里面的变量。
10.匿名函数其实就是相当预匿名内部类。
11.let 函数参数为调用者本身。

var str: String? = null
 str?.let{
    if(it.isNotBlank()){
        it.capitalize()//大写
    }else{
         "i'm str"
    }
 }