Kotlin编译器优化与when关键字详解

Any类型:

定义一个函数,其参数接受所有类型,对于Java而言Object是所有类的基类,而在Kotlin中得用Any关键字,如下:

其中瞅一下该Any字段是个啥类型:

然后里面做一些判断:

这是因为Kotlin自动的将str转换成了String了,因为有了条件类型的判断了,如下:

我们知道如果换成是Java,代码肯定得这样写:

很明显可以看到Kotlin更加的智能,对于Java明显显得有点麻烦,好,接下来调用一下,这里有个小技巧,对于我们Java而言如果在IDE中敲sout就可以快速的打出Sytem.out.println(),而其实对于Kotlin中也可以用sout这个快捷方式打出println(),如下:

接下来调用一下:

数组相关:

而其实类型声明可以去掉,因为可以类型推断出来:

接着来看一下intArrayOf的官方说明:

所以可以看到就是一个Int类型的数组,对于Kotlin的Int目前已经使用比较多了,有必要对它进一步了解,跟进去瞅下它到底是啥?

是一个Int的类,另外IntArray类型也再瞅一下:

好接下来则遍历一下数组,有几种方式,之前也已经使用过了,如下:

其中由于有类型推断,所以这块类型声明可以去掉:

接着换一种方式,可以遍历数组的下标,也是Kotlin提供的一个方便的方式,如下:

最后还有一种方式,同时可以遍历元素和索引:

when关键字:

它的应用场景是非常多的,跟Java的if...else if...或switch..case的作用差不多,下面编写一个函数,来完成这样的一个功能:如果传给函数的参数是“hello”,则会转换成“HELLO”返回,而如果传的是“world”则会转换成“WORLD”返回,而如果是传的是“hello world”则会转换成“HELLO WORLD”返回,而如果是其它的字符串则直接“other input”,对于Java来实现这个需求那是非常简单的,但是在Kotlin中如何利用when关键字来实现呢,如下:

其实它还有更加精简的写法,IDE已经给出提示了:

可以用IDE的提示:

下面来调用一下:

其实。。程序还可以继续简化,因为咱们目前这个函数体就只有一个when表达式,其实是可以直接给函数赋值的,如下:

另外继续来用下when:

那,如果a要在一个范围内来匹配,而不是只匹配一个值该怎么弄呢?

那如果还要匹配更多的值呢?

其中看一下细节,对于这个“..”查看它的定义,其实会看到是它:

好,另外目前程序还是报错的,如下:

所以:

该关键字在实际开发中是非常常用的,所以需要好好消化。

posted on 2019-07-14 22:10  cexo  阅读(1191)  评论(0编辑  收藏  举报

导航