Mar 14使用 Kotlin Bytecode 學習、DebugKotlin 最重要的特點之一:能 100% 與 Java 交互使用,所有在 Kotlin 內所寫的程式碼都能夠轉成 Kotlin Bytecode,接著再將 Bytecode 反組譯(Decompile)成 Java Code。透過這樣子的動作,我們就可以將 Kotlin 的程式碼以 Java 來呈現,如果你對於 Java 比較熟悉一點,這樣的 …Kotlin6 min readKotlin6 min read
Feb 3[Kotlin 小撇步 #10]不可變的資料類別及防禦性複製在 Kotlin 中,可以使用 val 、var 來決定變數能不能被修改,其中 val 表示該屬性是不可以變動的,而 var 則為可以變動的。 我們經常會使用 data class建立一個資料類別(Data Class)時,在建構式就必須要決定要使用 val或是 var。為了讓資料類別能夠將資料妥善的封裝在裡面,不會在意外的時間被修改,通常我們會使用 …Kotlin10 min readKotlin10 min read
Dec 8, 2022Kotlin in Advent Of Code 2022 — Day3Day3 ## Rucksack Reorganization 完整的題目可參考:Day 3 — Advent of Code 2022 Part I 每一行都代表一個背包,而每一個背包都含有兩個隔層,我們需要找出這個背包所裝的物品類型,而物品的類型為兩個隔層相同的字元。 以測試內容來看,第一行的 vJrwpWtwJgWrhcsFMMfFFhFp 前半部為 vJrwpWtwJgWr ,後半部為 hcsFMMfFFhFp,其中相同的 …Kotlin7 min readKotlin7 min read
Dec 5, 2022Kotlin in Advent Of Code 2022 — Day1又來到一年一度的 Advent Of Code 的挑戰,去年只挑戰了8題,希望今年能夠挑戰多一點 XD Day1 Calorie Counting 完整的題目可參考:Day1 Part I 根據題目,我們需要從輸入的列表計算出最大的卡路里,而在輸入值中,是以 "" 作為分段,所以我們要把 "" 當作分隔的條件,將每一段的數字加起來,找出最大的那個值。 一開始的思路,是想說要如何以 "" 作為分割條件,讓輸 …Kotlin3 min readKotlin3 min read
Oct 5, 2022Kotlin Coroutine X Functional ProgrammingWhat’s Coroutine? Coroutine 在 Kotlin 1.3 版的時候推出,它是一種非同步任務的解決方案,如果用一句話形容,可以看作是一個輕量型的執行緒(Thread)。雖然 Coroutine 的背後也是在執行緒上執行,但是與直接使用執行緒不同的是,一個執行緒上能夠同時執行多個 Coroutine,啟動相同數量的非同步任務,使用 Coroutine 比起直接使 …Kotlin24 min readKotlin24 min read
Jul 28, 2022Functional Programming in Kotlin (3)命令式程式設計 VS 宣告式程式設計 — 探討這兩種程式設計之前,我們先看一個範例,假設有一個列表,這個列表裡面儲存著每個學生的分數,其中包含數學、國語以及英文,如果我們希望將這個列表轉換成由姓名與數學分數組成的 Map,而我們只希望取前三名即可。 其中,這個列表裡面所儲存的類別為 Score,內容如下: data class Score(val name: String, val math: …Kotlin5 min readKotlin5 min read
Jul 18, 2022Functional Programming in Kotlin (2)FP 的三大類函式 — 前一篇文章介紹 FP 的概念,接下來繼續介紹的是在使用 FP 時,一定會出現的三大類函式,這三大類函式分別是: 過濾(filter) 轉換(transform) 合併(combine) 下面的文章,我將一一介紹這三類函式的差異。 過濾 (Filter) 過濾,是把我們傳入的 List 根據條件篩選出我們希望留下來的值。所以它的類型並不會改變,例如原本輸入的值為 List<In …Kotlin10 min readKotlin10 min read
Jul 16, 2022Functional Programming in Kotlin (1)與 FP 的第一次接觸 — 什麼是 Function? 在進入 Functional Programming 之前,我們要先了解什麼是 Function,Function 的中文翻譯是「函式」,而它的概念是從數學的領域所引進的,在程式語言以外,我們可以在很多地方都能夠看到函式的存在,下面以一個一元一次方程式作範例: f(x) = x*2 + 3 這個方程式的內容是在等號右邊的 x*2 + 3 ,左邊的 f( …Kotlin9 min readKotlin9 min read
May 25, 2022十分鐘帶你快速認識 Kotlin — Coroutine前言 開發 Android 的開發者或多或少一定有遇過 ANR(Application Not Response),你知道出現 ANR 的原因嗎?主執行緒大約 16ms 更新畫面一次,而一次大約是 60 幀。當我們執行的任務太耗時,佔用太多主執行緒 (Main Thread) 的時間,那麼就會因為主執行緒一直忙著運算該耗時任務,而沒有時間更新畫面。輕者 …Kotlin Coroutines9 min readKotlin Coroutines9 min read
Feb 14, 2022[從 Effective Java 了解 Kotlin] 覆寫 equals 以及 hashCode 方法Item 10 — Obey the general contract when overriding equals 在 Java 中,所有物件的源頭是 Object ,而 Kotlin 則是 Any,雖然這兩個的名稱不同,但是共同的點是,它們都有共同的函式: equals() , hashCode(), toString() 。(Kotlin 的 Any 只有這三個函式,而 Java 的 Object 還包含其他的函式)。 為什麼這三個函式是必要的呢? equal …Kotlin10 min readKotlin10 min read