主类
class MainActivity : AppCompatActivity() {
lateinit var tv_va: TextView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
tv_va = findViewById<TextView>(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<String>("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"//全局常量