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类型数据,即,
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)
}
其是使用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)
}
相关文章推荐
- kotlin 学习笔记(基本语法)1
- kotlin的基本语法学习
- kotlin入门系列二---基本语法
- Kotlin基本语法
- Kotlin基本语法之数组
- Android开发,Kotlin的了解与学习(四)-----基本语法之方法、操作符
- kotlin 基本语法(一)
- 一个Swifter的Kotlin学习——Kotlin 基本语法
- Kotlin一些基本语法
- Kotlin使用(一)基本语法
- kotlin学习-基本语法(二)
- Kotlin 基本语法 (一)
- Kotlin VS Java:基本语法差异
- KOtlin 基本语法
- kotlin学习(一)kotlin的基本句法语法
- kotlin基本语法
- Kotlin 入门-基本语法
- Kotlin——程序核心构成元素之包、类、接口以及对象基本语法(一)
- Kotlin 学习笔记(一) 基本类型和基本语法
- Kotlin 初探基本语法及入门