资讯专栏INFORMATION COLUMN

#土豆记事# ——学习Kotlin(Android中的Swift)

ytwman / 2085人阅读

摘要:概览之前我们学习过如何写一个简单的。综上所述,我要给点赞我把土豆记事所有的代码全部改成的实现,并开源到上大家可以下来学习,也非常感谢大家对我的支持。

概览

之前我们学习过如何写一个简单的Android App。
为了赶上潮流,我特地去学习了下Jetbrains开发的新语言 —— Kotlin

不想说太多的概念,总结出来就是 Swift on JVM
那么为什么要用它呢,我喜欢它的理由很多:

  

带来了Nullable Safe特性 —— 以后再也不怕讨厌的 Null Pointer Exception了。

闭包闭包闭包 —— 重要的事情说三遍.

Smart Type Case —— 很智能的一个特性,当你使用if检查是否是某种类型以后,自动转换为指定类型。

没有附加的Runtime —— iOSer 看到这会不会哭.

Kotlin stdlib 非常小,打包后Apk的体积几乎没有变化,也不用担心方法数超过限制。

总而言之,就是用极小的代价换来了我们许多振奋人心的特性,那么你心动了么?
当然,在心动之前也要理智,我们要知道Kotlin暂时还没有发布"正式版",一直在0.x.x版本号中徘徊,如果你足够胆大(像我),那么你大可以一试。

  

老规矩先补上官方文档传送门:http://kotlinlang.org/docs/reference/basic-syntax.html

一些基本的语法如——基础类型、流程控制、类与继承等等特性我们已经不陌生,我们来看看几个新特性。

Nullable Safe

我翻译过来是空指针安全监测,什么意思呢?看下如下语法糖(Swift Developer可以直接跳过)
比如

var text:String? = null
text?.length()

如果是java代码,在text变量为null的时候,调用text.length()是会崩溃滴,那么在这里,我们用了?来告诉编译器,如果textnull,则返回null,否则返回text.length(),具体翻译过来就是这样:

if (text == null) {
   return null;
} else {
   return text.length()
}

看我们少了这么多判断,这个语法糖是不是很棒?

Closure & Lambda & Higer-Order Functions

介绍我最爱的闭包,那么在java 8以下的版本中,java是没有闭包这个特性的,举个例子,你的函数不能被当成一个对象使用,必须使用一个接口封装,而我们使用Kotlin就可以直接传函数当形参啦!

fun lock(lock: Lock, body: () -> T): T {
  lock.lock()
  try {
    return body()
  }
  finally {
    lock.unlock()
  }
}

此处我们的body形参就是一个0参数返回类型为T的函数,可以作为我们的回调函数使用,而不用像java一样定义又臭又长的接口,再传入使用。

fun dfs(graph: Graph) {
  fun dfs(current: Vertex, visited: Set) {
    if (!visited.add(current)) return
    for (v in current.neighbors)
      dfs(v, visited)
  }

  dfs(graph.vertices[0], HashSet())
}

这是一个典型的dfs算法,使用Kotlin的高阶函数特性——可以在函数内定义函数。

Smart Type Case

智能类型转换,什么意思呢?show一段代码

if (str is String) {
    return str.length()
} else if (str is Int) {
    return str.toString()
}

我们知道Int类型是没有length这个方法的,也就是经过这个if判断,如果满足if条件的话,编译器自动帮我们转换成我们要的类型,然后供我们调用。

我试着在SegmentFault for Android中加入对Kotlin的支持,在加入Kotlinlib前后,包大小并没有明显增长(1M以下),性能亦没有降低,所以用户是感知不出来内部发生了什么变化。
综上所述,我要给Kotlin点赞!

Demo

我把土豆记事所有的代码全部改成Kotlin的实现,并开源到Github上 
https://github.com/geminiwen/tudounotepad
大家可以clone下来学习,也非常感谢大家对我的支持。
(顺便跪求各种star star star)

  

欢迎关注我Github 以及 @Gemini

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/12313.html

相关文章

  • #土豆记事#教你开发Android App之 —— 认识Android开发工具

    摘要:我们来写个记事本吧。,先下载,是官方推荐的,能快速的开发下载地址第一步创建工程我们新建一个项目,点即可。就是你应用的名称,是你公司的域名,如果你是个人开发者,就写你自己的域名即可。是包名,理论上要求在地球范围内唯一,它标识了你这个。 注: 这是为想入门Android的新手准备的一篇文章 想学习写Android App么? 其实很简单,哦,再简单之前,也要先学java。 .....

    why_rookie 评论0 收藏0
  • #土豆记事#教你开发Android App之 —— Hello Android

    摘要:现在引入了一个构建系统叫做,你可以理解为一个里面的或者是里面的。注在系统中,类的对象不是用来给开发者直接去的,它的生命周期由系统直接管控因为我们不参与控制的生命周期,因此它在什么时候回调什么函数变得异常重要。 上一篇文章,我们讲了如何创建一个工程,以及Android工程的一些基本概念,把工程创建出来后,我们看下文件目录结构,一个简单的工程结构如下。 showImg(https://s...

    刘明 评论0 收藏0
  • #土豆记事#教你开发Android App之 —— 真的开始写App了

    摘要:基础界面我们要开发的界面如下有一个一个列表右下角一个按钮可以用系统自带的实现以上为。列表子视图和数据之间的交互使用了适配器模式,在中把你的数据渲染到上,然后应用给父视图。这样就满足了一个记事本的基础需求增加与修改。 基础界面 我们要开发的App界面如下showImg(https://segmentfault.com/img/bVmzuq); 有一个title 一个列表 ...

    Anonymous1 评论0 收藏0
  • 从零开始学 Kotlin 之「1」基础篇

    摘要:前言大家好,这里是从零开始学之基础篇,本文首发于公众号,欢迎前往大家关注。也可以用在表达式中集合的使用创建一个集合,并用循环遍历输出也可以在用去检查集合中的元素最后从零开始学之基础篇到这里就结束了。 前言 大家好,这里是「从零开始学 Kotlin 之『1 』基础篇」,本文首发于公众号「Binguner」,欢迎前往大家关注。我会每周分享一些关于 Android 和其他方向的技术干货或一...

    hatlonely 评论0 收藏0
  • 弃 Java 而使用 Kotlin 的你后悔了吗?| kotlin将会是最好的开发语言

    摘要:本报告受访者的工作经验比参加调查的开发者要少一些。这其中不乏有因品牌吸引而投身于开发的学生,据调查显示,早期,主要由经验丰富的专业开发者使用,如今大批年轻的开发者及学生开始涌入。 自从 2011 年发布以来,Kotlin 凭借强大的功能在开发者中的欢迎程度与日俱增。且在一年前,Google 宣布 Kotlin 正式成为 Android 官方开发语言,由此引发了从 Java 迁移到 Ko...

    codecraft 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<