Kotlin艺术探索之参数和异常

作者: 树獭非懒 | 来源:发表于2019-06-03 11:39 被阅读1次

    参数传递

    默认参数的使用

    可以在方法的参数中设置值作为它的默认参数值

    fun reformat(str: String = "11",isTrue: Boolean = false){
        println(str)
        println(isTrue)
    }
    

    使用默认参数在调用的时候就可以不传递参数

    //使用默认参数
    reformat()
    

    具名参数的使用

    具名参数就是指定参数名对其赋值,这样的好处就是在传参数的时候不需要考虑一一对应,另外因为Kotlin的参数传递的灵活性,在传递参数时很容易出现歧义,这时候可以通过具名参数来消除歧义。

    //使用具名参数,可以指定具体的参数
    reformat(isTrue = false,str = "a")
    

    变长参数的使用

    变长参数可以对一个参数赋多个值,需要用到vararg关键字

    fun becomeLong(vararg args: Int,str: String){
        args.forEach { println("$str $it")
        }
    }
    

    传递多个值给变长参数

    becomeLong(1,2,3,4,str = "jwt")
    

    因为变长参数多个值的原因,str这个参数需要用具名参数来消除歧义

    传递一个数组的值给变长参数,可以使用 * 运算符来实现

    var array = intArrayOf(1,2,3)
    becomeLong(*array,str = "jason")
    

    使用 * 它会把数组元素分开依次传给变长参数

    异常捕获

    Kotlin的异常的捕获也是通过try-catch块来捕获的

    举个栗子,一目了然:

    fun main() {
        var args: Array<String> = Array(3){"0"} //初始化数组,构造方法的参数(size: Int, init: (Int) -> T)
        args.set(0,"2")
        args.set(1,"1")
        try {
            var x = args[0].toInt()
            var y = args[1].toInt()
            println("$x + $y = ${sum(x,y)}")
        }catch (e: NumberFormatException){
            println("需要输入的数据类型是整数")
        }catch (e: ArrayIndexOutOfBoundsException){
            println("需要输入两个整数")
        }catch (e: Exception){
            println("捕捉到程序异常")
        }finally {
            println("求和计算完成")
        }
    }
    
    
    fun sum(x: Int,y: Int): Int{
        return x + y
    }
    

    对求和过程的出现的具体异常进行捕获处理,无论结果如何最终都会执行finally方法块。

    相关文章

      网友评论

        本文标题:Kotlin艺术探索之参数和异常

        本文链接:https://www.haomeiwen.com/subject/euxcxctx.html