美文网首页
kotlin函数中的默认参数和命名参数

kotlin函数中的默认参数和命名参数

作者: 阳光的nick_lxz | 来源:发表于2017-06-21 14:51 被阅读0次

    默认参数

    fun reformat(str: String,
    normalizeCase: Boolean = true,
    upperCaseFirstLetter: Boolean = true,
    divideByCamelHumps: Boolean = false,
    wordSeparator: String= "bbb") {
    }
    

    可以看到方法中共有5个参数,其中后面4个有默认值
    默认值的好处是什么呢?
    fun reformat("aaa")//这样是可以的
    也就是说当函数有默认值的时候,参数有默认值的话,我们可以不传这个参数,它会使用默认值,是不是很简便
    但是如果我想改变其中一个,
    例1reformat("aa",true)//这样是可以的相当于reformat("aa",true,true,false,"bbb")
    例2reformat("aa","aa")//错误
    例子2为什么不行?
    他其实相当于reformat("aa","aa",true,false,"bbb")参数2是boolean,结果我们传的是String,我们看看错误编译器的提示。

    Paste_Image.png
    提示说需要一个boolean类型的参数,但是我们后面3个不是有默认值吗?
    这就说明他不能自动的去匹配,只会默认照着参数的顺序来匹配。这有点坑是不是
    其实不然 假设
    funreformat("aa",true) 试问这个true是参数234中的哪一个?
    请往下看

    命名参数

    如果要在多个默认参数之中,设置个别参数的值,就可以使用命名参数了。
    这里用上面的例2说明
    reformat("aa",wordSeparator="aa")//这样是可以的解决了reformat("aa","aa")//错误
    也就说,你需要改某一个又默认值的参数,可以指定名称
    reformat("aa",wordSeparator="aa")相当于reformat("aa",true,true,false,"aa")
    简直不要太爽。

    相关文章

      网友评论

          本文标题:kotlin函数中的默认参数和命名参数

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