Android 新貴 kotlin (3)

weixin_34321977發表於2018-12-11
8207483-37344b802dc423f8.jpg

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


8207483-42105969e5abb770.jpg

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


8207483-129af4f371bcd0f3.jpg

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

8207483-1b5612831fa4e9ca.jpg

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

8207483-3b76ce9477d75158.jpg

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

8207483-eae7c5a9b912be63.jpg

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

8207483-78f61e987e33a32a.jpg

上面的程式碼對於 java developer 也是再熟悉不過了。

在 java 中我們通過 setter 和 getter 將私有變數取值和賦值進行控制。

8207483-7a4309b9e3c15e18.jpg

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

8207483-3707c5d9f3680355.jpg

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

8207483-421847af4ca19b6c.jpg
8207483-3e3a3e7a8c47999c.jpg

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

8207483-f142ebe2f57c5c8f.jpg
8207483-c975ab9e69871582.jpg

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

8207483-684f8e7441b151b7.jpg

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

8207483-c56b4530316a9be0.jpg

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

8207483-a1e6ab170ad038b3.jpg

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

8207483-f5ab8a7ceef61732.jpg

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

8207483-4bf09b742bac98ae.jpg
8207483-2be3c518b8047ae5.jpg

相關文章