kotlin 基本语法(三)

    kotlin中的函数定义和java中有着很大的区别

   其是使用fun来定义函数的

   1、普通函数

   如下所示,其中fun开头表示定义的为函数,max表示函数名,value表示参数,Int表示参数类型,Double表示返回值的类型,

 当要使用到多个参数时,中间用逗号隔开。

fun max(value:Int):Double{
        return (value*1.0)
}
fun  max2(value0:Int,value1:Int,value2:Double):Double{
        return //value
}
   同时,函数也可以写成一个表达式的形式,如,

fun max(value:Int,value1:Int):Int=if(value>value1) value else value1

    当返回值没有申明的时候,它会自己返回Unit类型数据,即,

fun max():Unit{
           //do you want
}
   这里的Unit可以省略,即,

fun max(){
        //do you want
}

    2、泛函数

fun <T>name(value:T):T{
         //do you want
}
//使用
  name<T>(value)
    其中T表示数据的类型,如Double,Int等,其它和普通函数没有差别,在调用时如上面所示,但是其中的<T>可以省略掉,即,

name(value)

    3、函数的参数可变

      当函数的参数要是可变时,可用vararg关键字,来对参数进行修饰,即,

fun <T>min(vararg value:T):T{
     //do you want
}
其中的参数value表示长度不定的一个数组,调用时,和普通的数组方式一样

    4、匿名函数和lambda函数

       它们的意义比较相似,但表示方式有所不同,

      匿名函数:

fun(value:Int):Int=0
     lamabda函数:

{value->function}
    其中value表示函数的参数可以有多个,中间用逗号隔开,function表示函数要实现的具体功能如,

var sum={x:Int,y:Int ->x+y }
   5、高阶函数

    其是指函数的参数可以为一函数,如

fun test(value:Int, f:()->Int):Int{
           return value+f()
}
    函数test的参数有两个,第一个是类型为Int的变量,另一个是函数名为f的函数,“()”表示传入的函数没有参数,“->”后面的Int表示

 函数的返回类型是Int.具体使用方法,可见下列:

fun test(value:Int,f:(Int,Int)->Int):Int{
       return value+f(1,2)
}
//1)普通函数
fun sum(x:Int,y:Int):Int{
       return x+y
}
test(3,::sum)   //输出6
//2)匿名函数
test(3,fun(x:Int,y:Int):Int=x+y) //输出6
//3)lamabda函数
test(3,{x:Int,y:Int->x+y})
     6、中缀函数和内联函数

   中缀函数是用关键字infix修饰的,一般与类并用,如,

infix fun Int.gh(value:Int):Int{
       return this+value
}
//调用
2.gh(3)  //or
2 gh 3
   内联函数一般使用关键字inline来修饰的,调用函数时直接引入函数所代表的表达式,如,

inline fun f(x:Int,y:Int):Int{
      return x+y
}
  其一般使用于比较短的函数体。

     7、尾递归函数
     其是用关键字tailrec修饰的,译器就会对代码进行优化, 消除函数的递归调用, 产生一段基于循环实现的, 快速而且高效的代码。如,

tailrec fun tesH(value:Int):Int{
       if(x<=0)
           return 0
       else   return value*tesH(value-1)
}



   








 



 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值