kotlin精讲-第2章(10)kotlin函数加强_中

作者: 739c8d412b4c | 来源:发表于2017-12-04 18:20 被阅读217次

Kotlin相比于Java

相比于java 描述
新增 可以有顶层函数
新增 可以有嵌套函数
新增 可以有中缀函数

目标

目标 知识点
掌握 顶层函数的的定义和使用,以及注意事项
掌握 嵌套函数的的定义和使用,以及注意事项
掌握 中缀函数的定义和使用,以及注意事项

可变参数:vararg关键字

什么是可变参数?适用于参数个数不确定,类型确定的情况。kotlin把可变参数当做数组处理。同java,可变参数只能出现在参数列表的最后。Kotlin的可变参数通过vararg关键字实现。参考代码:

针对以上代码我们可以看到,被vararg修饰的变量,有size属性,可以进行遍历。

接收我们编写一个方法,测试一下可变参数只能出现在参数列表的最后这个结论,参考代码:

通过以上代码,我们验证了“可变参数只能出现在参数列表的最后”。

顶层函数

顶层函数也可以称为包级别函数,就是一个函数,可以直接放到某一个包里面,而不用一定需要放到某一个类里面。在Java里面一个方法,必须属于一个类,在Kotlin中,方法可以独立存在。其实我们之前写的很多函数都是顶层函数,比如我们的main方法:

顶层函数的定义显得自由,不受类的约束。顶层函数调用方法,如果在同一个包,直接调用即可,如果在不同包,导入对应的包就可以了。

我们写个案例验证下,先在“第2章开始.B变量和函数进阶.顶层函数1”包下定义方法“sayHello2Kotlin”,参考代码:

接着在“第2章开始.B变量和函数进阶.顶层函数2”包下定义方法“sayHello2Java”,参考代码:


接着我们在一个新文件中调用“sayHello2Kotlin”和“sayHello2Java”两个方法。

我们虽然没有写具体的类,但是其实通过查看编译转换的字节码,编译器会帮我们生成了一个类,比如我们查看“sayHello2Kotlin”方法对应的字节码,参考截图:

嵌套函数

在java里面,函数只能定义在某一个类里面,刚刚我们说了,方法可以直接定义在一个包里面,独立于一个类存在。除此之外,方法里面还可以还可以定义方法。这样的方法称为嵌套方法。

假如我们有这样一个场景,保存用户之前需要校验用户名和密码是否为空。如果不使用嵌套函数,我们可以这样实现,参考代码:

针对检验方法“validate”,我们这里使用的是顶层函数的形式,放在了最外面。接着我们把该方法直接挪动到saveUser方法里面,参考代码:

针对以上代码,发现方法定义挪动了某一个方法里面同样是可以的。

中缀函数

一个函数为成员函数或者拓展函数,并且只有一个参数,并且使用infix修饰。在进行函数调用的时候可以使用中缀方式调用,参考代码:

相关文章

网友评论

  • 刚刚了然:fun main(args: Array<String>) {
    val strA = "A"
    val strB = "B"
    if (strA sameAs strB) {//中缀调用 sameAs
    println("str is the same")
    } else {
    println("str is the differ")
    }
    }

    infix fun String.sameAs(strB: String) = String.equals(strB)//写在最高层中,顶层+中缀,感觉有点实用...

本文标题: kotlin精讲-第2章(10)kotlin函数加强_中

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