前言
上节我们已经讲过了函数
的默认参数
与可变参数
写法,但是对于函数的数据了类型都要是确定的。那么,当一个函数的参数类型不确定怎么办?或者还有其他情况咋办?
那么,今天我们就来学习下几种特殊的函数。
今天涉及内容:
- 泛型函数
- 内联函数
- 尾递归函数
一. 泛型函数
在Android开发过程中,我们知道,会涉及到各种数据类型的问题。当初始化一个可知数据类型的时候,我们可以这样:
//声明指定数据类型的数组
var mIntArray:Array<Int> = arrayOf()
var mStringArray:Array<String> = arrayOf()
当数据类型未知的时候,我们用<T>
来表示未知数据类型。<T>
表示泛型,这里需要注意的是,声明一个数组不能用泛型。但是当方法中的参数类型不确定时,我们却可以用泛型代替,如下:
//声明全局变量
var mCount:Int = 0
//点击事件
btn_test.setOnClickListener {
mCount = mCount%2
tv_name.text=when(mCount){
0-> showText(1,2,3)
else -> showText("a","b","c")
}
mCount++
}
/**泛型可变参数方法**/
fun <T>showText(vararg infos:T?):String?{
var result:String? = null
if(!infos.isNullOrEmpty()){
infos.forEach {
if(result.isNullOrBlank()){
result = it.toString()
}else{
result = "$result,${it.toString()}"
}
}
result="最终结果: $result"
}
return result
}
二. 内联函数
先上一个泛型方法使用的例子:
网友评论