您的位置:首页 > 其它

kotlin 基本语法(三)

2017-06-25 16:49 274 查看
    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)
}

   

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: