Android 新貴 kotlin (1)

最近感覺 kotlin 在 Android 開發中會逐漸取代 java。開始認爲 kotlin 和 swift 命運差不多,熱一陣就回漸漸冷卻得,其實 swift 進入 4.0 以後也不再沉默了。但是支持 2017 年來看 kotlin 逐步成爲開發 Android 的首選語言。最近看的 Android 開發視頻,大家分享的 demo 中所選語言也都是 kotlin。自己現在做的項目都還是用 java 寫的。但我相信不久的將來 kotlin 會有一翻作爲。其中一個原因,就是 kotlin 和 java 有良好的兼容性。

第一個就是以後好的語言,可以減少開發者的工作量。我們這裏定一個類,很簡單吧,不過當我們看到對應 java 代碼大家可能會驚訝。其實其他像 groovy 這樣語言也有着同樣優勢,無需定義繁多的getter 和 setter 來獲取屬性。這裏 kotlin 有點像 javascript


我們在 kotlin 簡簡單單地定義一個了實體類。其實這一行代碼包含了很多信息,在  java 中,要實現同樣的功能,我們需要多行代碼,我們可以寫一個同樣功能 java 類

這樣kotlin 中 main 函數和 java 區別不大,就是寫法有些變化。在 kotlin 中變量類型的寫法放我想起了 typescript 這門語言,前面的 val 讓我想起許多現代的語言例如 groovy。

看一看在 kotlin 中是如何創建一個對象?創建方式也很簡單,無需 new,這裏先提及一下 kotlin 的對象都是 immutable ,從這一點來看,可能 kotlin 更好地支持函數式編程。

在 kotlin 中通過調用一個對象的 copy 方法來再創建一個對象,如果調用 tickets 的 copy 方法而不傳任何參數,這回使用 tickets 的參數。

我們看一看通過 copy 傳參創建的對象是否和源對象相當,這裏使用 == 而不是 === 來判斷。


如果修改 copy 參數和創建 tickets 相同,我們再次判斷兩個對象是否相當。輸入如下圖,這兩個對象相當。

在 kotlin 的主函數中,創建一個 java 的 JavaMoney 類的對象,然後我們爲這個對象賦值,這裏 kotlin 中沒有 getter 和 setter 。和 javascript 很相似,我們直接對象 . 就可以對對象的屬性進行賦值。


同樣也可以在 java 的 main 函數中創建一 kotlin 對象,這是kotlin 的長處,這也是 kotlin 在 java 大哥面前依然能夠有一席之地的原因 kotlin 和 java 良好的兼容性,無縫調用。


我們來寫一個簡單函數,打印變量方式也是使用瞭解析的 ${money.amount}

函數的調用也沒什麼特別。

如果沒有給函數返回值函數返回值默認類型是?Unit

我們可以點進去看一看,unit到底是其實他是一個普通的類


我們可以通過調整參數的位置,用對函數進行傳參,想象一下,我們一個函數,有上百個參數,每個參數每個參數的類型都是布爾型,那麼我們如果不記得參數的位置,這是一件比較糟糕的事情。在 kotlin 中在對函數傳參的時候,可以根據參數名來進行傳參,這樣一來,我們就不用考慮函數傳參時參數的位置,只要參數變量對就行。

如果參數輸入順序也是可以改變的,我們可以傳參時通過指定參數名來傳遞參數值,這樣我們參數位置可以任意調整。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章