一.函数基本用法
override fun onCreate(saveInstance:Bundle?) {
}
override默认增加注释符,fun为表示方法的语法格式,如果没有返回值,不需要加上void,参数列表为变量:数据类型,如果有返回类型,则函数格式为
fun getMessage(name:String,sex:String ):String {
return ""
}
无返回值的情况在Kotlin其实也是有返回值的,返回Unit
fun getMessage(name:String,sex:String ):Unit {
}
参数列表在Kotlin中可设置默认参数
fun getMessage(name:String="Lisa",sex:String = "girl",year:String):String {
return ""
}
调用的时候可对某个默认对值修改
getMessage(sex="boy",year = "13");
二.泛型函数
fun <T> show(type:String,info: T?):String{
return ""
}
调用时候在函数后面加上泛型
show<String>("animal", "panda")
三.内联函数
inline fun <reified T:Number> setResult(array:Array<T>){
}
四.简化函数
Kotlin中函数可当作一个变量,所以对于内容简单的,可简化函数
fun math(a:Int) = if(a>0) 1 else 0
五.高阶函数
把函数当作参数传入另一个函数的参数列表中,内嵌了函数的外部函数叫做高阶函数
fun <T> maxCustom(array:Array<T>,compare:(T,T)->Boolean):T?{
var max:T?=null;
for (item in array) {
if (max == null || compare(item, max)) {
max = item
}
}
return max
}
调用该函数时,要实现compare这个函数
var flowers: Array<String> = arrayOf("牡丹", "月季", "玫瑰花", "荷花", "菊花", "兰花", "水仙")
val max = maxCustom(flowers, { a, b -> a.length > b.length })
六.扩展函数
Kotlin支持对现有类功能扩展
fun <T> Array<T>.swap(pos1:Int,pos2: Int) {
val tem = this[pos1]
this[pos1] = this[pos2]
this[pos2] = tem
}
七.扩展高阶函数
fun <T> Array<T>.maxCustom(compare:(T,T)->Boolean):T?{
var max:T?=null;
for (item in this) {
if (max == null || compare(item, max)) {
max = item
}
}
return max
}
八.单例对象
object DataUtils {
val nowDataTime:String
get() {
val sdf = SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
return sdf.format(Date())
}
}
调用
val nowDataTime = DataUtils.nowDataTime;