Kotlin笔记(12) — 特殊函数

2020-07-31  本文已影响0人  奔跑的佩恩

前言

上节我们已经讲过了函数默认参数可变参数写法,但是对于函数的数据了类型都要是确定的。那么,当一个函数的参数类型不确定怎么办?或者还有其他情况咋办?
那么,今天我们就来学习下几种特殊的函数。

今天涉及内容:

  1. 泛型函数
  2. 内联函数
  3. 尾递归函数

一. 泛型函数

在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
    }

二. 内联函数

先上一个泛型方法使用的例子:

上一篇下一篇

猜你喜欢

热点阅读