kotlin学习笔记(三)

来源:互联网 发布:姚明09年季后赛数据 编辑:程序博客网 时间:2024/06/01 07:14
一、for

for循环的三种方式,只要实现了iterator,都可以使用for循环。

fun main(args: Array<String>) {
    val list = arrayListOf(12, 3, 4, 5)
    for (i in list) {
        
    }
    for ((index, value) in list.withIndex()) {

    }
    for (indexValue in list.withIndex()) {
        println("${indexValue.index}+${indexValue.value}")
    }

}
二、具名参数 变长参数 默认参数

具名参数:在传参的同时,使用 参数名 = 值 的方式,将值传给某个具体参数。

变长参数:使用vararg,可传入多个值,或传入array(前带*),变长参数后的参数需使用具名参数

变长参数:可赋予某个参数某个默认值,当该参数未传值时,即为该默认值

fun main(args: Array<String>) {
    val list = arrayListOf(1, 2, 3, 6)//list不行
    val array = intArrayOf(1, 2, 3, 6)
    test(p1 = "zzz", p3 = 1, p2 = *array)
    test("zzz", 1, 2, 3, 4, p3 = 1)
    test(p3 = 1, p2 = *array)
}

fun test(p1: String = "11", vararg p2: Int, p3: Int) {

}


三、抽象类 接口

interface InputDevice {
    fun input(event: Any)
}

interface USBInputDevice : InputDevice

interface BLEInputDevice : InputDevice

abstract class USBMouse(val name: String) : USBInputDevice {
    override fun input(event: Any) {
    }
}

class LogMouse : USBMouse("罗技") {


}

class Computer {
    fun addUSBInputDevive(inputDevice: USBInputDevice) {
        println("add usb input device:$inputDevice")
    }

    fun addBLEInputDevive(inputDevice: BLEInputDevice) {
        println("add ble input device:$inputDevice")
    }

    fun addInputDevice(inputDevice: InputDevice) {
        when (inputDevice) {
            is USBInputDevice -> {
                addUSBInputDevive(inputDevice)
            }
            is BLEInputDevice -> {
                addBLEInputDevive(inputDevice)
            }
            else -> {

            }
        }

    }
}