Kotlin基础 4

来源:互联网 发布:淘宝手机海报尺寸2017 编辑:程序博客网 时间:2024/06/01 15:23

所用到的知识

Lambda表达式

val sum = {a:Int,b:Int -> a+ b}sum(2,3)  //返回结果5//等同于fun sum(a:Int,b:Int):Int{    return a + b}

类中 init 是什么意思?

class Operator(op: String) {    //初始化代码块以init关键字开头    init{        //初始化代码    }}

计算机的代码

fun main(args: Array<String>) {    println("请输入算是例如:3 + 4")    val  input = readLine()    if(input != null){        val split = input.split(" ")        val arg1 = split[0].toDouble()        val op = split[1]        val arg2 = split[2].toDouble()        println("$arg1 $op $arg2 = ${Operator(op).apply(arg1,arg2)}")    }}class Operator(op: String) {    val opFun: (left: Double, right: Double) -> Double    // 初始化    init {        opFun = when (op) {            "+" -> { l, r -> l + r }            "-" -> { l, r -> l - r }            "*" -> { l, r -> l * r }            "/" -> { l, r -> l / r }            "%" -> { l, r -> l % r }            else -> throw UnsupportedClassVersionError()        }    }    fun apply(left: Double,right: Double):Double{        return opFun(left,right)    }}

重载运算符后 简写为

fun main(args: Array<String>) {    println("请输入算是例如:3 + 4")    val  input = readLine()    if(input != null){        val split = input.split(" ")        val arg1 = split[0].toDouble()        val op = split[1]        val arg2 = split[2].toDouble()        println("$arg1 $op $arg2 = ${Operator(op)(arg1,arg2)}")    }}class Operator(op: String) {    val opFun: (left: Double, right: Double) -> Double    // 初始化    init {        opFun = when (op) {            "+" -> { l, r -> l + r }            "-" -> { l, r -> l - r }            "*" -> { l, r -> l * r }            "/" -> { l, r -> l / r }            "%" -> { l, r -> l % r }            else -> throw UnsupportedClassVersionError()        }    }    operator fun invoke(left: Double,right: Double):Double{        return opFun(left,right)    }}