Android 新貴 kotlin (3)

圖
圖左側為 kotlin 的程式碼,而右側為 java 的程式碼,如果您是有 Java 背景的,可以對比來看一看。

kotlin 和老大的關係非同一般,這是 我們可以通過選中程式碼,然後右鍵選擇,來將 java 的程式碼轉換為 kotlin 的程式碼。

圖
轉後的程式碼,簡單明瞭,這也是他能挖老大牆角的原因。

圖
我們通常會通過分隔符,這裡是空格,將字串拆分為集合,然後根據需要獲取我們想要的資訊,這種場景想必大家都遇到過。下面的處理方式,大氣點叫解決方案。大家可能再熟悉不過了。

圖
我們可以定義資料型別,這樣相對陣列更直接和容易理解。

圖
我們可以 kotlin 提供一種用於資料結構的類 叫做 data class。

圖
上面的程式碼對於 java developer 也是再熟悉不過了。
在 java 中我們通過 setter 和 getter 將私有變數取值和賦值進行控制。

圖
這裡 set 無需帶屬性名,field 代表欄位。今天分享主要讓大家學會如何用 kotlin way 來寫程式碼

圖
對於很多公用的屬性,我們希望計算一次然後多次使用,再次使用時無需計算,例如我們終端裝置的資訊,在這裡只需要獲取一次就夠了,我們就可以用到 kotlin 的代理類來實現。 代理類通過 by 這個關鍵字來實現。這裡用到了 lazy 表示只有在第一次訪問才會計算。


圖
上面我們可以通過代理來實現觀察者模式。


圖
下圖程式碼似成相識,特別你有 java 背景,會倍感親切。我們看一看如何用 kotlin way 來實現。我們通常會在專案中寫一些工具類來提供一些通用的方法。看這裡的 StringUtil 提供一些對字串操作的方法。

圖
大家多數都是從 java 轉而學習 kotlin 。這裡值得注意的是 kotlin 支援多正規化程式設計的語言,我們需要用 kotlin 的方式來寫程式,如果我們用 kotlin 來寫程式碼,思維還是 java 方式。那就失去用 kotlin 的意義了。這裡我們 object 來代替高成本的 class。

圖
看看這些程式碼,我們就又回到了 java。

圖
其實在 kotlin 我們很容易就可以擴充套件我們基本資料型別的方法。來擴充套件其一些方法。

圖
多型在 java 我們通常需要根據引數個數的不同,寫多個同名的函式實現多型。這裡我們給引數預設值來實現多型。

圖

圖