Google力荐的现代语言Kotlin——学完你就会喜欢

Kotlin:Google让我们使用Kotlin的理由

2017-07-23  本文已影响14人  1024工场

在2017 Google I/O大会的主旨演讲中,宣布Kotlin语言将在Android上正式受到官方支持。相信开发人员,尤其是Andoid开发者都或多或少的听过Kotlin,它并不是横空出世的新东西。既然Google已经做支持了,那么我们也有理由深入学习一下。
那么Google有什么理由?Kotlin到底有什么优点?让我们使用Kotlin ?下面来一起探讨一下。

一、非常适合Android开发,带来了现代语言优势,而不引入新的限制

1. 开源性:

2. 兼容强:

3. 性能优:

4. 互用好:

5. 占用小:

6. 编译快:

7. 学习易:

8. 新特性:

语法简单:

//变量和常量,类型推断:变量当前的版本号,类型Int可以根据值推断出来
var currentVersionCode = 1
//显式声明类型
var currentVersionName : String = "1.0"
//方法声明
fun main(args: Array<String>) {
    println(args)
}
//类和继承关系声明
class MainActivity : AppCompatActivity() {
     
}     
//DataClass自动生成getter,setting,hashcode和equals等方法
data class Book(var name: String, val price: Float, var author: String)
//支持默认参数值,减少方法重载
fun Context.showToast(message: String, duration:Int = Toast.LENGTH_LONG) {
    Toast.makeText(this, message, duration).show()
}    

空指针安全:

//空安全调用符号?,如果对象为null则不调用,不抛出空指针异常
fun testNullSafeOperator(string: String?){                  System.out.println(string?.toCharArray()?.getOrNull(10)?.hashCode())
}

扩展方法:

//向Context扩展longToast方法
fun Context.longToast(message: String) {
    Toast.makeText(this, message, Toast.LENGTH_LONG).show()
}
//通过applicationContext对象调用longToast方法
applicationContext.longToast("hello world")

Lambda,高阶函数,Stream API:

//使用Lambda设置按钮监听
findViewById(R.id.content).setOnClickListener {
    Log.d("MainActivity", "$it was clicked")
}
//使用高阶函数,传入函数作为参数(或者作为返回)
fun SharedPreferences.editor(f: (SharedPreferences.Editor) -> Unit) {
    val editor = edit()
    f(editor)
    editor.apply()
}
//Stream API调用方式,使得编程更加方便
Jsoup.parse(URL(url), PARSE_URL_TIMEOUT).getElementsByClass("table table-sm")
    .first().children() .filter { "tbody".equals(it.tagName().toLowerCase()) }
    .flatMap(Element::children).forEach {
        trElement ->ProxyItem().apply {
            trElement.children().forEachIndexed { index, element ->
                when (index) {
                    0 -> {
                        host = element.text().split(":")[0]
                        port = element.text().split(":")[1].toInt()
                    }
                    1 -> protocol = element.text()
                    5 -> country = element.text()
                }
            }
        }.let(::println)
    }     

字符串模板:

//在模板中灵活运用对象、变量等
val book = Book("Thinking In Java", 59.0f, "Unknown")
val extraValue = "extra"
Log.d("MainActivity", "book.name = ${book.name}; book.price=${book.price};extraValue=$extraValue")     

二、已经被许多大公司采用


国外的如Pinterest、Basecamp和Keepsage等公司已经成功的将它们的应用迁移到Kotlin,反馈在工作质量和速度方面有很大的提升,使得源码行数减少30%,方法数量减少10%。

三、提供了超越标准语言的工具


1 .Kotlin Android Extensions:一个编译器扩展,允许你从代码去除findViewById()调用,使用合成编译器生成的属性替代;
2 .Anko:一个围绕Android API提供更友好的Kotlin包装的库,还有一种SDL可以使用Kotlin代码替换xml布局;

好处Google已经说了这么多了,别犹豫了开始我们的Kotlin学习吧。


1.新技术,新未来!尽在1024工场。时刻关注最前沿技术资讯,发布最棒技术博文!(甭客气!尽情的扫描或者长按!)

1024工场服务号
2.加入“Kotlin开发”QQ讨论群,一起学习一起Hi。(甭客气!尽情的扫描或者长按!)
Kotlin开发群
上一篇下一篇

猜你喜欢

热点阅读