Kotlin: 小菜一碟

本文讲的是Kotlin: 小菜一碟,


Kotlin 有不少很棒的特性,而其中一些如扩展函数、 高阶函数、和Null 安全性更是引人注意。 毫无疑问,这些基本而强大的特性正是这门语言的根基所在。

我喜爱这些特性,不过同时,这里也有一些你所不太知道的,却一样令我钟情的“小东西”。

有一些东西小而微,可能你每天都在成百次地使用它,却感受不到任何“高级”的地方。它是这门语言的基础知识,但相比 Java,却为你节省了很多精力与时间。

让我们看一下这个简洁的例子:

// Java
1 | View view = getLayoutInflater().inflate(layoutResource, group);
2 | view.setVisibility(View.GONE)
3 | System.out.println(“View " + view + " has visibility " + view.getVisibility() + ".");

// Kotlin
1 | val view = layoutInflater.inflate(layoutResource, group)
2 | view.visibility = View.GONE
3 | println(“View $view has visibility ${view.visibility}.")

一眼望去,Kotlin 的版本似乎看起来没什么不同,但它们的差别却很微妙,从中我们可以解读出一些长远来看令你的工作变得更棒的东西。

浏览完了上面那个例子之后,让我们看看在 Kotlin 中相对于 Java 永远无需做的五件事

(注意:为了看的清楚,Java 总会首先展示,Kotlin 其次。代码的其余部分已被截掉,不同之处以粗体标出)

1.声明变量类型

View view
vs.
val view

Kotlin 根据赋值内容推断变量类型(这里是 View),而不是明确声明一个变量类型。你只需写 val 或 var, 赋值给它,就可以继续工作了,无需考虑更多。

2. 将字符串连接成不可读的乱码

“View " + view + " has visibility " + view.getVisibility() + "."
vs.
“View $view has visibility ${view.visibility}."

Kotlin 提供了字符串插值。它简单至极,使得对字符串的处理变得更加简单和可读,对日志记录特别有用。

3. 调用 getter/setter

getLayoutInflater().inflate();
view.setVisibility(View.GONE);
view.getVisibility();
vs.
layoutInflater.inflate()
view.visibility = View.GONE
view.visibility

Kotlin 提供了访问器来处理 Java 的 getter 和 setter,使得它们可以像属性一样被使用。因此获得的简洁性(更少的括号和 getset 前缀)显著提高了代码的可读性。

(有时候 Kotlin 编译器不能够解析类中的 getter/setter,因而这个特性无法使用,不过这种情况比较罕见)

4. 调用令人痛苦的超长模板语句

System.out.println();
vs.
println()

Kotlin 给你提供了许多简洁而方便的方法来帮你避免那些 Java 中长的令你痛苦的调用语句。println是最基本的(尽管不得不承认它不是那么实用)例子,但是 Kotlin 的基本库 有不少有用的工具减少了 Java 中固有的冗长语句,这点毋庸置疑。

5. 写分号

;
;
vs.

还需要我说更多吗?

荣幸地提示:虽然没有在文中展示,但再也不用写 'new' 关键字了!



瞧,我知道这些不是那种可以让人震惊的特性,但在几个月的工作和上万行代码之后,会让你的工作变得大不一样。这确实是那种你需要经历并赞美的事情之一。

将所有这些小的东西放在一起,包括小标题中 Kotlin 的特性,你会感觉比之前好多了。





原文发布时间为:2017年7月3日


本文来自合作伙伴掘金,了解相关信息可以关注掘金网站。

时间: 2024-08-03 09:19:28

Kotlin: 小菜一碟的相关文章

Zendesk:让客户服务变成小菜一碟

zendesk切入的是一个大有前景的领域--客户服务领域.事实上,随着未来技术的发展,中间的销售环节将越来越被自动化所代替,因此售前和售后的客户服务将承担起最重要的角色,作为公司直接跟客户接触的唯一通路, 客服的举动直接影响了客户对产品和服务的满意度,进而会影响购买决定.因此,切入这个领域对客户服务人员和各环节进行辅助指导.过程监控.即时反馈等都变得非常非常有价值起来.这个市场在目前服务意识还未充分发掘的 中国市场前景尤其广阔,还在彷徨的创业者们不妨可以在这个市场小试身手. Zendesk 是个

跟金碟K3的接口,出价2W,着急。。。。。。。

问题描述 跟金碟K3的接口,出价2W,着急.......悬赏一下:出2W,做三个内容1:物料基础数据2入库单3出库单把这三个内容写入到金碟K3里面:主要的问题在对K3的了解,如果把这三个内容写进去,需要了解K3里面关联的数据表,这个数据库表我们搞不清楚要写多少,他们说要写几十张表呢:其他的内容都可以好解决的:我的联系电话:13093173767翟 解决方案 解决方案二:OK1:物料基础数据写入很简单2入库单和3出库单是有关联的数据表,主要的表有:入库类型表/部门表/工员表/仓库表/发票数据表/采

初次接触:DirectDraw

第六章 初次接触:DirectDraw 本章,你将初次接触DirectX中最重要的组件:DirectDraw.DirectDraw可能是DirectX中最强大的技术,因为其贯穿着2D图形绘制同时其帧缓存层也是DirectX3D的基础.当然,DirectX8.0中DirectDraw已经完全集成到了DirectX3D里面.此外,如果你对DirectDraw深有了解,那将拥有创建任何DOS16/32类型的图形化程序的能力.DirectDraw是理解众多DirectX自身概念的钥匙.所以,听仔细了.

极路由使用评测

  笔者入手极路由,属于"第二三批工程机用户",其实这款路由刚推出的第一时间,我已经有所动心,但并没有立即购买的冲动,因为那时我有一台运行OpenWRT的无线路由,刚刷了新固件,运行很稳定,而且可以多拨(陕西电信还是很良心的),所以不打算花199尝试这个新产品. 这是一篇非常平实的产品体验文.像极路由这样的智能路由器,看多了网上的炒作,究竟如何,笔者在使用了5个月之后,来给大家一个解答. 笔者是一个喜好折腾的人,曾经购买过FW300对其加装Flash和USB口,刷上第三方固件实现脱机下

极路由hiwifi怎么样?

笔者是一个喜好折腾的人,曾经购买过FW300对其加装Flash和USB口,刷上第三方固件实现脱机下载. 笔者入手极路由,属于"第二三批工程机用户",其实这款路由刚推出的第一时间,我已经有所动心,但并没有立即购买的冲动,因为那时我有一台运行OpenWRT的无线路由,刚刷了新固件,运行很稳定,而且可以多拨,所以不打算花199尝试这个新产品. 后来因为有事在河南住了一段时间,一个集体宿舍,不到10个人,某个用台机的哥们拉了一条4M的联通宽带,他说他有无线路由,但是不会设置.原来是一台FAST

内外网同时使用

内外网同时使用 最近给一家单位调试网络,他们有自己的内部网络,同时还有外网.现在的要求是一台电脑要同时上内外网,也就是说用户在不做任何设置的情况下能自由的进行内网和外网的切换. 这样的情况里在企业里遇到的很多,对于专门搞网络的技术人员来说是小菜一碟,可是对于一般的企业网管却是个头疼的问题. 在教大家怎么设置同时上内外网之前,首先要搞清楚你们公司网络的具体情况.为了更直观的说明问题,我们分别举两个典型的实例来说明问题. 一.单网卡的情况实现同时上内网和外网(网络环境如图所示)   本示例内外网的I

计算机学习速成法

一.学什么最容易由于现在的快速开发工具的不断推出,使得软件开发越来越容易,进入软件开发的门槛也越来越低.很多人在IDE工具的诱骗之下,快的十天,慢的半个月就可以进入所谓"程序员"的领域,成了一个所谓的"程序员".这对于IDE提供商来说是乐得合不拢嘴的事情,但是对于软件来说却是一个无形的打击.由于快速工具的盛行,很多人把开发看作小菜一碟,特别是很多在校的大学生,都认为现在教的内容一旦出了学校都已经是落伍,无形中产生了讨学的心理.今后的软件开发逐渐趋于两极化,一方面有越

Cardboard虚拟现实开发技巧(一)之放置一个固定在视野中的物体

Google Cardboard 虚拟现实眼镜开发技巧(一)之放置一个固定在视野中的物体 利用CardboardMain下的Head轻松放置一个固定在视野中的物体 大家知道在游戏开发中,我们经常会需要放置一些操作面板啊,血量槽啊,比如CS中的枪械,子弹,血量等等,这些UI因素是应该永远显示在用户视野当中的,而不是一转头就看不到自己的血量了. 这个问题在传统的Unity游戏开发中自然是小菜一碟,但是在虚拟现实应用里就不一样了,我们的手机屏幕被分成了两部分,所以这些UI也应该是相应的分离显示,而如果

科技立项-关于导航软件的询问,请各位指教

问题描述 关于导航软件的询问,请各位指教 Google地图,百度地图等导航软件是用什么工具开发的,需要用到哪些技术啊,还有可以告诉我一个大致的开发过程吗,谢谢! 解决方案 PC版GPS导航DIY组合教程 解决方案二: 首先,你应该咨询一个靠谱的开发团队,而不是自己捣鼓.你的问题是你完全对于软件开发没有任何认识.软件开发的关键不在于用什么"工具",好比作家写文章不取决于用什么样的笔.导航软件分为两类,一类是在线地图的方式,一类是分为离线地图的方式.在线地图很容易理解,就是你的手机和电脑上