国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Kotlin:Android世界的Swift

2019-11-06 09:41:42
字體:
來源:轉載
供稿:網友

Kotlin是一門與Swift類似的靜態類型JVM語言,由JetBrains設計開發并開源。與java相比,Kotlin的語法更簡潔、更具表達性,而且提供了更多的特性,比如,高階函數、操作符重載、字符串模板。它與Java高度可互操作,可以同時用在一個項目中。

按照JetBrains的說法,根據他們多年的Java平臺開發經驗,他們認為Java編程語言有一定的局限性和問題,而且由于需要向后兼容,它們不可能或很難得到解決。因此,他們創建了Kotlin項目,主要目標是:

創建一種兼容Java的語言編譯速度至少同Java一樣快比Java更安全比Java更簡潔比最成熟的競爭者Scala還簡單

Ashraff Hathibelagal是一名喜歡研究新框架和SDK的獨立開發者。近日,他撰文介紹了Kotlin的一些語法。按照他的說法,一個合格的Java程序員可以在很短的時間內學會使用Kotlin。

類與構造函數

Kotlin創建類的方式與Java類似,比如下面的代碼創建了一個有三個屬性的Person類:

class Person{    var name: String = ""    var age: Int = 0    var college: String? = null}

可以看到,Kotlin的變量聲明方式略有些不同。在Kotline中,聲明變量必須使用關鍵字var,而如果要創建一個只讀/只賦值一次的變量,則需要使用val代替它。另外,為了實現“空安全(null safety)”,Kotlin對可以為空的變量和不可以為空的變量作了區分。在上述代碼中,變量nameage不可為空,而?表明變量college可以為空。定義完類之后,創建實例就非常簡單了:

var jake = Person()

注意,Kotlin沒有關鍵字new。實例創建完成后,就可以像在Java中一樣為變量賦值了:

jake.name = "Jake Hill"jake.age = 24jake.college = "Stephen's College"

變量可以采用上述方式賦值,也可以通過構造函數賦值,但后者是一種更好的編碼實踐。在Kotlin中,創建這樣的一個構造函數非常簡單:

class Person(var name: String, var age: Int, var college: String?) {}

而實際上,由于構造函數中沒有其它操作,所以花括號也可以省略,代碼變得相當簡潔:

class Person(var name: String, var age: Int, var college: String?)var jake = Person("Jake Hill", 24, "Stephen's College")

上述代碼中的構造函數是類頭的一部分,稱為主構造函數。在Kotlin中,還可以使用constructor關鍵字創建輔助構造函數,例如,下面的代碼增加了一個輔助構造函數初始化變量email

class Person(var name: String, var age: Int, var college: String?) {    var email: String = ""    constructor(name:String, age:Int, college: String?, email: String) : this(name, age, college) {        this.email = email    }}

Kotlin允許創建派生類,但要遵循如下規則:

必須使用代替Java中的extends關鍵字基類頭必須有open注解基類必須有一個帶參數的構造函數,派生類要在它自己的頭中初始化那些參數

比如下面的代碼創建了一個名為Empoyee的派生類:

open class Person(var name: String, var age: Int, var college: String?) {    ...}class Employee(name: String, age: Int, college: String?, var company: String) : Person(name, age, college) {}

函數與擴展

有派生就有重載。與類的派生一樣,允許重載的方法要有open注解,而在派生類中重載時要使用override注解。例如,下面是在Employee類中重載Person類的isEligibleToVote方法的代碼:

override fun isEligibleToVote(): Boolean {    return true}

除了改變類的已有行為,Kotlin還允許開發者在不修改類的原始定義的情況下實現對類的擴展,如下面的代碼為Person類增加了一個名為isTeenager的擴展:

fun Person.isTeenager(): Boolean {    return age in 13..19}

在需要擴展來自其它項目的類時,這個特性特別有用。

上面提到的函數都與Java中的函數類似,但Kotlin還支持其它類型的函數。如果一個函數返回單個表達式的值,那么可以使用=來定義函數。下面是一個創建單表達式函數的例子:

fun isOctogenarian(): Boolean = age in 80 .. 89

Kotlin還支持高階函數和Lambda表達式。例如,lambda表達式{x,y->x+y}可以像下面這樣給一個變量賦值:

val sumLambda: (Int, Int) -> Int = {x,y -> x+y}

而下面的高階函數將上述表達式作為一個參數,并將表達式的計算結果翻倍:

fun doubleTheResult(x:Int, y:Int, f:(Int, Int)->Int): Int {    return f(x,y) * 2}

該函數可以使用下面的其中一種方式調用:

val result1 = doubleTheResult(3, 4, sumLambda)

val result2 = doubleTheResult(3, 4, {x,y -> x+y})

范圍表達式

在Kotlin中,范圍表達式用的比較多。范圍創建只需要..操作符,例如:

val r1 = 1..5//該范圍包含數值1,2,3,4,5

如果創建一個降序范圍,則需要使用downTo函數,例如:

val r2 = 5 downTo 1//該范圍包含數值5,4,3,2,1

如果步長不是1,則需要使用step函數,例如:

val r3 = 5 downTo 1 step 2//該范圍包含數值5,3,1

條件結構

在Kotlin中,if是一個表達式,根據條件是否滿足返回不同的值,例如,下面的代碼將isEligibleToVote設置為“Yes”

var age = 20val isEligibleToVote = if(age > 18) "Yes" else "No"

when表達式相當于Java的switch,但功能更強大,例如,下面的代碼將typeOfPerson設置為“Teenager”:

val age = 17val typeOfPerson = when(age){    0 -> "New born"    in 1..12 -> "Child"    in 13..19 -> "Teenager"    else -> "Adult"}

循環結構

Kotlin使用for..in遍歷數組、集合及其它提供了迭代器的數據結構,語法同Java幾乎完全相同,只是用in操作符取代了:操作符,例如,下面的代碼將遍歷一個String對象數組:

val names = arrayOf("Jake", "Jill", "Ashley", "Bill")for (name in names) {    PRintln(name)}

whiledo..while循環的語法與Java完全相同。

字符串模板

Kotlin允許在字符串中嵌入變量和表達式,例如:

val name = "Bob"println("My name is ${name}") //打印"My name is Bob"val a = 10val b = 20println("The sum is ${a+b}") //打印"The sum is 30"

此外,Kotlin與Java高度可互操作。Kotlin可以用一種自然的方式調用現有的Java代碼,而Java也很容易調用Kotlin代碼。同時,Kotlin也可以與JavaScript互操作。

上面介紹的只是Kotlin的一些基本語法和特性,更多細節請查閱官方文檔。事實上,到目前為止,Kotlin還仍然只是一個預覽版本,接下來的幾個月中還會有多項重大改進及新增特性。盡管如此,GitHub上已有400多個與Kotlin項目相關的庫。

在另外一篇文章中,Hathibelagal寫道,“如果你正在為Android開發尋找一種替代編程語言,那么應該試下Kotlin。它很容易在Android項目中替代Java或者同Java一起使用?!毕胍私馊绾卧贏ndroid Studio中使用Kotlin開發Android項目的讀者,可以讀下這篇文章。

原文出處http://www.infoq.com/cn/news/2015/06/Android-JVM-JetBrains-Kotlin


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 增城市| 西藏| 石林| 托克逊县| 南雄市| 丹江口市| 东光县| 南投县| 新丰县| 上虞市| 玛多县| 河津市| 大兴区| 南华县| 石家庄市| 信阳市| 汝南县| 长岛县| 祁阳县| 乌拉特中旗| 大石桥市| 佛坪县| 霍山县| 新津县| 凤庆县| 新源县| 响水县| 永春县| 湘乡市| 陆河县| 奉节县| 镇巴县| 佛冈县| 克山县| 黔西| 兴和县| 丹巴县| 泰州市| 金堂县| 城口县| 民丰县|