May 8用 Kotlin 實作 DSL — 以 JSON 為範例近年來,聲明式程式語言(Declarative programming)逐漸的出現在現代程式語言中,其中不泛包括了 Flutter、Jetpack Compose…,使用聲明式程式語言,我們實作時考慮的就會是怎麼去完成(What to do),而不是如何去完成(How to do)。 Domain Specific Language (DSL) …Kotlin10 min readKotlin10 min read
Apr 25[Kotlin 小撇步 #11] 使用 Enum.entries 取代 Enum.values()Kotlin 1.8.20 新改動 當我們建立函式/類別的時候,為了要儲存狀態,可能會直接使用基本型別,如下 GameScore 類別中,包含了一個型別為 String 的等級(grade): class GameScore(val grade: String) 使用這個類別的時候,我們必須將型別為 String 的等級存入,如下: GameScore( …Kotlin4 min readKotlin4 min read
Apr 17[KotlinConf 2023] 那些令人期待的 Kotlin 2.0 新功能2023年的 KotlinConf 在阿姆斯特丹舉辦了三天的研討會,在會中也公布了在 Kotlin 2.0 中預計會推出的新功能。在這些功能當中,有些項目已經能夠上線了,而有些需要更多的討論才能做出最後的結論。那麼是哪些功能會在 Kotlin 2.0 推出呢?下面我們將針對 Keynote 上介紹的內容,一一來介紹給各位: Static extens …Kotlin11 min readKotlin11 min read
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