kotlin 传方法 可变参数 接口

主类

class MainActivity : AppCompatActivity() {
    lateinit var tv_va: TextView
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        tv_va = findViewById(R.id.tv_va)
        tv_va.setOnClickListener {
        }
    }
    // 1.可变参数
    fun foo(vararg para: String) {//打印可变参数 传多个参数 直接调用即可
        for (i in para.indices) println("${para[i]}")
        println("${para.contentToString()}")
    }

    //2.传函数
    /**
    此函数作为参数传递 函数的定义
     */
    //arg01,arg02是实参,arg1,arg2是形参,是要传人的函数 ->Int 返回Int类型,如果没有返回值写成->Unit
    private fun getResult(
        arg01: String,
        arg02: String,
        methods: (arg1: String, arg2: String) -> Int
    ) {
        System.out.println("----->msg:执行方法之前") //1
        var ret = methods(arg01, arg02);
        System.out.println("----->msg:执行方法之后" + ret)//3
    }

    fun logFun(msg: String, msg2: String): Int {
        Log.d("----->msg:${msg},${msg2}", "----")
        return 1;
    }
    //函数的调用 getResult("哦这是什么:","这是Android啊",::logFun)

    //3.传接口
    private fun initData(handlerBack: HandlerBack) {
        handlerBack.callBack("你好!")
    }
    //调用和实现
//    initData(object : HandlerBack {
//        override fun callBack(info: String) {
//            println("$info")
//        }
//    })
    //4.默认参数定义
    private fun initDatas(name: String = "张三", handlerBack: HandlerBack) {//有单个默认参数,可以不传参数 多个参数要传值
        handlerBack.callBack(name)
    }
    //调用和实现
//    initDatas("11", object : HandlerBack {
//        override fun callBack(info: String) {
//            println("$info")
//        }
//    })

}

接口定义

interface HandlerBack { //接口定义
    fun callBack(info: String)
}

下面是一些基础

val lists = listOf("1", "33", "44")

1.匿名函数 method1("1", "hoe")
//val method1 = {s:String,s1:String->
//    println("${s}")
//    println("${s1}")
//}
//val method1: (String, String) -> Unit={
//        s, s2 ->
//        println("$s,$s2")
//}

//2.定义
//fun loginTest(name: String, respon: (String, Int) -> Unit) {
//    if (name == "gu") {
//        respon("ok", 200)
//    }
//}
//(1)调用
//loginTest("gu"){
//    msg:String,code:Int->
//    println("*** $msg,$code")
//}
//(2)调用 直接调用 loginTest("gu",::para) //具名
//fun para(msg:String,code: Int){
//    println("*** $msg,$code")
//}

//3.   2个变量
//fun showMethod(info:String):(str:String,s:Int)->String{
//    println("info:$info")
//    return {//再返回一个匿名函数
//        str:String,s:Int->
//        "${str},$s"
//    }
//}
//调用
//var method= showMethod("11")
//println(  method("gu",10))

//code 4 空合并操作符
//var info:String?=null
//println(info?.let { "ok" }?:"is null")

//code 4 list遍历
//    //第一种遍历
//    for (i in lists) {
//        println("$i")
//    }
//    //第二种遍历
//    lists.forEach {
//        println("$it")
//    }
//第三种遍历
//  lists.forEachIndexed{
//      index, s ->
//      println("index=$index,s=$s")
//  }

//code 5 元素过滤
//val (_, v1, v2) = lists
//println("$v1,$v2")

//code 6 类型转换
// (student as person).

//code 7 object
// object student 既是类名也是实例 典型的单例

//code 8 内置函数
//let run with apply aslo

//code 9对象表达式
//open class ktbase88{//定义
//    open fun add(info:String)= println("add $info")
//}

//val p=  object :ktbase88(){ //调用
//    override fun add(info: String) {
//        println("***add*** $info")
//    }
//}
//p.add("li")  companion

//code 9 伴生对象
//companion object Obj

//code 10 数据类生成更丰富
//data class

const val str: String = "122"//全局常量

kotlin 传方法 可变参数 接口_第1张图片

 

你可能感兴趣的:(android项目代码,kotlin,android,java)