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要在一个范围内来匹配,而不是只匹配一个值该怎么弄呢?
那如果还要匹配更多的值呢?
其中看一下细节,对于这个“..”查看它的定义,其实会看到是它:
好,另外目前程序还是报错的,如下:
所以:
该关键字在实际开发中是非常常用的,所以需要好好消化。
Kotlin编译器优化与when关键字详解的更多相关文章
- 【转载】C/C++中extern关键字详解
1 基本解释:extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义.此外extern也可用来进行链接指定. 也就是说extern ...
- Java面试题04-final关键字详解
Java面试题04-final关键字详解 本篇博客将会讨论java中final关键字的含义,以及final用在什么地方,感觉看书总会有一些模糊,而且解释的不是很清楚,在此做个总结,以备准备面试的时候查 ...
- Objective-C 实用关键字详解1「面试、工作」看我就 🐒 了 ^_^.
在写项目 或 阅读别人的代码(一些优秀的源码)中,总能发现一些常见的关键字,随着编程经验的积累大部分还是知道是什么意思 的. 相信很多开发者跟我当初一样,只是基本的常用关键字定义属性会使用,但在关键字 ...
- loadrunner 脚本优化-关联函数web_reg_save_param()函数详解
脚本优化-关联函数web_reg_save_param()函数详解 by:授客 QQ:1033553122 Insert->New Step,打开Add Step对话框 选择函数web_re ...
- Delphi、Lazarus保留字、关键字详解
Delphi.Lazarus保留字.关键字详解 来自橙子,万一的博客以及其他地方 保留字:变量等标识符可以再使用: 关键字:有特定含义,不能再次重新定义: 修饰字:类似保留字的功能,也就是说可以重用 ...
- java关键字(详解)
目录 1. 基本类型 1) boolean 布尔型 2) byte 字节型 3) char 字符型 4) double 双精度 5) float 浮点 6) int 整型 7) long 长整型 8) ...
- Delphi 关键字详解
Delphi 关键字详解[整理于 "橙子" 的帖子] absolute //它使得你能够创建一个新变量, 并且该变量的起始地址与另一个变量相同. var Str: ]; S ...
- python关键字详解
今天依旧在啃:<笨方法学python>,其中习题37是复习各种关键字.我本想百度一下记一下就ok了,但是百度出来第一个就Hongten的博客.我才意识到我也有博客,我应该学习他,把这些积累 ...
- Tomcat 优化方案 和 配置详解(转)
转自 Tomcat 优化方案 和 配置详解 http://201605130349.iteye.com/blog/2298985 Server.xml配置文件用于对整个容器进行相关的配置. <S ...
随机推荐
- idea的groovy设置
idea的groovy设置 groovy使用的是java的jdk 新建groovy项目,第一次新建的时候,Groovy library是空的,需要点击右边的Create...新建. 但是由于brew ...
- 【Python学习之十一】Numpy
环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 python3.6 1.介绍NumPy(Numerical Pyt ...
- C++中int型数据的十六进制写法
C++中int类型数据的十六进制写法 在C++中,int类型一般表示一个有符号的32位整数.在一些情况下(例如进行位操作时)我们需要使用十六进制的方式来表示int类型.int32的取值范围:最大值:2 ...
- 一、Spring之组件注册-@Configuration&@Bean给容器中注册组件
xml配置方式 首先我们创建一个实体类Person public class Person { private String name; private Integer age; private St ...
- 常见的几种异常类型 Exception
常见异常类型:Java中的异常分为两大类: 1.Checked Exception(非Runtime Exception) 2.Unchecked Exception(Runtime Exceptio ...
- 用easyui从servlet传递json数据到前端页面的两种方法
用easyui从servlet传递json数据到前端页面的两种方法 两种方法获取的数据在servlet层传递的方法相同,下面为Servlet中代码,以查询表中所有信息为例. //重写doGet方法 p ...
- SpringMVC笔记2
响应数据和结果视图 返回值分类 1.返回值是String 返回值类型是字符串的,会根据返回的字符串去寻找相对应的jsp页面 @Controller @RequestMapping("/use ...
- 小程序发起get请求====post请求
- vue页面params传值的必须传name
a.vue向b.vue传值 a.vue this.$router.push({ path: '/payType', query: { putUpList: this.putUpList, name:' ...
- Geoserver 跨域设置
1.下载跨域jar包jetty-servlets.jar(下载geoserver使用的对应jetty版本——可以查看<Geoserver>\lib下jetty-servlet.jar的版本 ...