iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 22
0
Software Development

0 -> Android -> Kotlin 開發筆記系列 第 22

[Day 22]Kotlin 學習筆記II

  • 分享至 

  • xImage
  •  

繼昨天的學習:[Day21] Kotlin 學習日記 I

昨天的關鍵字有:

  • var

這是Kotlin 的變數,可以動態型別推論變數型別,
在弱型別語言中常見的修飾詞。

  • val

相當於Java的final 加上變數,看了一下kotlin建議大家盡量宣告val,
這跟他的語言設計典範有關。

  • override fun

覆蓋父類別的此function,
看了一下kotlin對於class的操作,
提供了許多更方便的語法。 (类与继承)

  • $

這個用程式解釋比較直觀,假設現在有個函式內容是用Log打印3次:

Java
他可以轉成Kotlin的這樣寫


kotlin

而且更有效率,因為他底層是用StringBuilder幫你實作細節。

  • internal

Kotlin 多了這個class的修飾詞,這個代表整個module的程式都可以呼叫這個fun。

  • inner class

如果在class(A class)裡面實作另一個class (B class)時,加上此修飾詞,
可以讓B直接呼叫A的變數。
(共用同一個記憶體,但這時使用this要註明這個this是指B or A)

  • for (i in 0..4) { userItems.add(TestItem("測試$i")) }

$上頭解釋了,for(i in 0..4)從字面上來看,
就是指i 會從0 執行到4,
筆者覺得迴圈這方面的改善,
是kotline之所以讓大家喜歡的原因,
因為筆者查了一下,它可以做蠻多的操作變化的,
之後專門寫一篇解釋。

  • TestItem.kt 只有一行,class TestItem(val title: String)

因為kotlin 有幾個特性,
因此他的 class可以省略掉許多Java中讓人覺得繁瑣的步驟,

以下解釋:

  1. Kotlin 不用分號
  2. 也不用{},因為他每個class後面的區塊自動會是這個程式的內容
  3. 每一段區塊的最後一句如果是同一型別就會自動被判定為return 值
  4. class內的值,可以直接用property去呼叫,
    如item.getTitle,可以簡化成item.title。

因此

Java

Kotlin

title的宣告因為這個class只需要提供get,
所以可以節省成val title,
接著這個變數是String型別,
又加上在建構子的時候就需要被賦值,
因此他可以整個省略掉,
取值也因為有get的property方式去取值,
因此只需要一行就能達成用途。


這樣說明完畢後,讀者們都理解了嗎?

筆者自己是蠻有收穫的,明天繼續努力。
本文同步發佈在Medium,連結在此


上一篇
[Day21] Kotlin 學習日記 I
下一篇
[Day 23] Kotlin 學習日記 III & Extensions
系列文
0 -> Android -> Kotlin 開發筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言