Kotlin艺术探索之参数传递和异常捕获

2019-06-0319:40:15编程语言入门到精通Comments1,840 views字数 1188阅读模式

参数传递

默认参数的使用文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/13290.html

可以在方法的参数中设置值作为它的默认参数值文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/13290.html

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

使用默认参数在调用的时候就可以不传递参数文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/13290.html

//使用默认参数
reformat()
复制代码

具名参数的使用文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/13290.html

具名参数就是指定参数名对其赋值,这样的好处就是在传参数的时候不需要考虑一一对应,另外因为Kotlin的参数传递的灵活性,在传递参数时很容易出现歧义,这时候可以通过具名参数来消除歧义。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/13290.html

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

变长参数的使用文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/13290.html

变长参数可以对一个参数赋多个值,需要用到vararg关键字文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/13290.html

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

传递多个值给变长参数文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/13290.html

becomeLong(1,2,3,4,str = "jwt")
复制代码

因为变长参数多个值的原因,str这个参数需要用具名参数来消除歧义文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/13290.html

传递一个数组的值给变长参数,可以使用 * 运算符来实现文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/13290.html

var array = intArrayOf(1,2,3)
becomeLong(*array,str = "jason")
复制代码

使用 * 它会把数组元素分开依次传给变长参数文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/13290.html

异常捕获

Kotlin的异常的捕获也是通过try-catch块来捕获的文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/13290.html

举个栗子,一目了然:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/13290.html

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方法块。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/13290.html

作者:树獭非懒
链接:https://juejin.im/post/5cf4b9135188251d9a6374c7
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/13290.html

文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/13290.html
  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/ymba/13290.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定