【Kotlin 入門指南】kotlin 預先條件函數 (Precondition functions)

閱讀時間約 2 分鐘
【Kotlin 入門指南】系列文章目錄:https://bit.ly/3t8awwL
Kotlin 線上課程教學影片:https://bit.ly/3qJ5a5Q

預先條件函數

在 Kotlin 中,預先條件函數(Preconditions)是維持程式碼安全的關鍵。這些函數位於標準函式庫中,用於確保資料的有效性及防範錯誤。我們將介紹幾種常見的預先條件函數,幫助你更有效地確保程式的穩定性和可靠性。

checkNotNull

checkNotNull 函數用於檢查參數是否為 null。當傳入的參數為 null 時,此函數將拋出 IllegalStateException 例外,否則返回非空值。範例如下:

fun printLength(s: String?) {
val length = checkNotNull(s).length
println(length)
}

在這個範例中,了解如何使用 checkNotNull 函數,以確保參數 s 不為 null。這樣我們可以安全地訪問 slength 屬性。

require

require 函數用於確認特定條件是否成立。如果條件不符合,將拋出一個帶有錯誤訊息的例外。範例如下:

fun divide(a: Int, b: Int) {
require(b != 0) { "分母不能為 0" }
println(a / b)
}

在這個範例中,了解如何使用 require 函數來確保參數 b 不為零,以避免除以零的錯誤。

requireNotNull

requireNotNull 函數用於檢查參數是否為 null,若為 null 則拋出 IllegalArgumentException。範例如下:

fun main() {
val name: String? = null
val nonNullName = requireNotNull(name) { "資料不能為空值" }
println(nonNullName)
}

在這個範例中,我們確保 name 不為 null,否則將拋出帶有自訂錯誤訊息的例外。

assert

assert 函數用於檢驗程式中的條件是否為真。若條件不成立,將拋出 AssertionError 例外。範例如下:

fun main() {
val x = 2
val y = 3
assert(x > 0)
assert(x < 0)
assert(x == 2) { "x 應該是 2" }
assert(x != 2) { "x 不應該是 2" }
assert(x + y == 5) { "x + y 應該等於 5" }
}

在這個範例中,了解 assert 函數如何用於驗證條件的真假。在實際程式中,assert 可以用來驗證輸入或中間結果是否符合預期。

10會員
228內容數
哈囉!歡迎光臨我的沙龍!我是 KT,一位對應用程式開發充滿熱情的開發者。在這個專屬空間,我將與您分享我在應用開發領域的深入學習心得和豐富的實戰經驗。如果您對應用程式開發技術同樣充滿好奇,渴望不斷探索新知,歡迎成為我們的會員,一起在應用程式開發的旅途上,探索更深層次的技術世界,享受學習的樂趣。
留言0
查看全部
發表第一個留言支持創作者!
HKT實驗室 的其他內容
在 Kotlin 中,null 安全是一個強大的特性,它確保了程式的穩定性和可靠性。Kotlin 提供了一種方式來明確指定哪些資料可以為 null,以及哪些資料不可以為 null。這種特性使得程式在編譯時能夠捕捉到可能的 null 引用,從而避免了執行時的錯誤。
在 kotlin 程式語言中,定義資料類型,最後加上問號「?」,則表示此筆資料可為空,可以指定 null 值。
存取可為空的變數,方式一: 使用 null check,跟傳統 Java,null 檢查方式相同。
存取可為空的變數,方式二: 使用 「let」 標準函數 kotlin 提供 「let」標準函數,用來檢查當資料值為 null,就不會去執行 {} 大括號裡面的程式區塊,反之資料不為空,則會執行大括號裡面的程式區塊。
存取可為空的變數,方式三: 使用 safe call 「?.」運算符號 通常搭配 Elvis「?:」運算符號一起使用。
存取可為空的變數,方式四: 使用「!!」堅持資料不為空運算符號(不建議使用)。 不建議大家使用「!!」,此方式不管資料有沒有值都會去存取資料值。
在 Kotlin 中,null 安全是一個強大的特性,它確保了程式的穩定性和可靠性。Kotlin 提供了一種方式來明確指定哪些資料可以為 null,以及哪些資料不可以為 null。這種特性使得程式在編譯時能夠捕捉到可能的 null 引用,從而避免了執行時的錯誤。
在 kotlin 程式語言中,定義資料類型,最後加上問號「?」,則表示此筆資料可為空,可以指定 null 值。
存取可為空的變數,方式一: 使用 null check,跟傳統 Java,null 檢查方式相同。
存取可為空的變數,方式二: 使用 「let」 標準函數 kotlin 提供 「let」標準函數,用來檢查當資料值為 null,就不會去執行 {} 大括號裡面的程式區塊,反之資料不為空,則會執行大括號裡面的程式區塊。
存取可為空的變數,方式三: 使用 safe call 「?.」運算符號 通常搭配 Elvis「?:」運算符號一起使用。
存取可為空的變數,方式四: 使用「!!」堅持資料不為空運算符號(不建議使用)。 不建議大家使用「!!」,此方式不管資料有沒有值都會去存取資料值。
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
條件式可以說是程式重要的能力,也是判斷作業流程細心程度的地方。 條件式 (Condition) ,顧名思義,只有符合條件才做事。 身為一個好士兵,就要執行自家長官的命令。如果是來自敵方隊伍、屬下、路人的命令,就可以快樂的無視他們。 關鍵程式碼大概就會是這樣: if (發令者 == 自家長官) {執行
Thumbnail
接續上次的士兵類別,提到名字用了 String 變數。 String 是字串的意思,在 Kotlin 裡,常見變數可以分成幾個基本資料型別:數字(Number)、字串(String)、布林(Boolean)。 差別在於行為模式不同,以加法為例,數字執行數學課上的四則運算的加法,字串卻做了連接,布林則
Thumbnail
作為指揮官,如果只有一個部下也太令人傷心了。 為能夠有效率的取得大量的士兵,使用類型(Type)來廉價批發。 建立一個檔案「士兵.kt」,這次選 class,讓 IDE 幫我們初始化類別的程式碼 。 建立一個檔案「士兵.kt」,選 class 。  IDE 預設將 class 取名和檔案一樣。 初級
程式是個單純的小伙子,他會按照程式碼的內容執行動作,所以我們可以把函數當作給他的指令「單位」,不是最小單位,就只是單位。 以下是令人熱血沸騰的情境: 「射擊準備!發射角度東偏南33度,目標距離200公尺,風向正西速度每小時100公里,氣溫38度,濕度百分之20。」 「yes, my master.」
Thumbnail
現在,開始建立第一個檔案吧,一樣用最簡單的 Hello World 示範。 在 kotlin 資料夾按右鍵選擇 New 裡的 Kotlin File/Class 。 雖然有許多格式可以選,但其實只是 IDE 提供初始程式碼的差別,完全可以中途更改,我們這次選最基本的 File 格式就好。 命名檔案和
Thumbnail
會撰寫 Hello World 程式,證明我們已經推開程式語言的大門,成為會寫這門語言的開發者,所以,現在就先來寫 Hello World 吧。 目標:印出 Hello World 這串文字。
Thumbnail
所謂專案,就是項目,或者說是主題。 比如說我今天打算寫個猜數字遊戲,於是就建立一個名為「猜數字」的專案。 如果要和外國人合作開發,專案名稱取英文會比較好,雖然不是每個外國人英文都很好,但是工程師要有基本的英文閱讀能力,科技界很多第一手消息都是英文,我們用的開發介面 Intellij IDEA
也許有人聽過, Kotlin 是物件導向語言。 既然都特別提了,肯定還有其他種語言,那就是程序導向語言。 最大的差別就是因為物件導向語言有了物件的概念,所以有了三大能力:繼承(Inheritance)、封裝(Encapsulation)和多型(Polymorphism)。
到官方網站 https://www.jetbrains.com/idea/ 下載名為 IntelliJ IDEA 的 IDE (整合開發環境:意味著撰寫、編譯、連結、除錯、執行等步驟全都包)。 因為安裝只要按照預設選項不停地點下一步,所以就不另做說明了,如果讀者有遇到安裝問題,可以留言提問。
Thumbnail
這幾天參加了 Kotlin Hero 程式競賽前的練習,有個特別的體驗。 看題目一邊理解題意時,一邊就會在心理想像出程式流程的設計長得怎麼樣,比如輸入數值的型態為何?需不需要字串拆解?用什麼迴圈或遞迴編碼結構?一邊實作出來。或是歸納題意後,用數學運算公式整理簡化,比如真值表簡化換算,或是套用等差級數
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
條件式可以說是程式重要的能力,也是判斷作業流程細心程度的地方。 條件式 (Condition) ,顧名思義,只有符合條件才做事。 身為一個好士兵,就要執行自家長官的命令。如果是來自敵方隊伍、屬下、路人的命令,就可以快樂的無視他們。 關鍵程式碼大概就會是這樣: if (發令者 == 自家長官) {執行
Thumbnail
接續上次的士兵類別,提到名字用了 String 變數。 String 是字串的意思,在 Kotlin 裡,常見變數可以分成幾個基本資料型別:數字(Number)、字串(String)、布林(Boolean)。 差別在於行為模式不同,以加法為例,數字執行數學課上的四則運算的加法,字串卻做了連接,布林則
Thumbnail
作為指揮官,如果只有一個部下也太令人傷心了。 為能夠有效率的取得大量的士兵,使用類型(Type)來廉價批發。 建立一個檔案「士兵.kt」,這次選 class,讓 IDE 幫我們初始化類別的程式碼 。 建立一個檔案「士兵.kt」,選 class 。  IDE 預設將 class 取名和檔案一樣。 初級
程式是個單純的小伙子,他會按照程式碼的內容執行動作,所以我們可以把函數當作給他的指令「單位」,不是最小單位,就只是單位。 以下是令人熱血沸騰的情境: 「射擊準備!發射角度東偏南33度,目標距離200公尺,風向正西速度每小時100公里,氣溫38度,濕度百分之20。」 「yes, my master.」
Thumbnail
現在,開始建立第一個檔案吧,一樣用最簡單的 Hello World 示範。 在 kotlin 資料夾按右鍵選擇 New 裡的 Kotlin File/Class 。 雖然有許多格式可以選,但其實只是 IDE 提供初始程式碼的差別,完全可以中途更改,我們這次選最基本的 File 格式就好。 命名檔案和
Thumbnail
會撰寫 Hello World 程式,證明我們已經推開程式語言的大門,成為會寫這門語言的開發者,所以,現在就先來寫 Hello World 吧。 目標:印出 Hello World 這串文字。
Thumbnail
所謂專案,就是項目,或者說是主題。 比如說我今天打算寫個猜數字遊戲,於是就建立一個名為「猜數字」的專案。 如果要和外國人合作開發,專案名稱取英文會比較好,雖然不是每個外國人英文都很好,但是工程師要有基本的英文閱讀能力,科技界很多第一手消息都是英文,我們用的開發介面 Intellij IDEA
也許有人聽過, Kotlin 是物件導向語言。 既然都特別提了,肯定還有其他種語言,那就是程序導向語言。 最大的差別就是因為物件導向語言有了物件的概念,所以有了三大能力:繼承(Inheritance)、封裝(Encapsulation)和多型(Polymorphism)。
到官方網站 https://www.jetbrains.com/idea/ 下載名為 IntelliJ IDEA 的 IDE (整合開發環境:意味著撰寫、編譯、連結、除錯、執行等步驟全都包)。 因為安裝只要按照預設選項不停地點下一步,所以就不另做說明了,如果讀者有遇到安裝問題,可以留言提問。
Thumbnail
這幾天參加了 Kotlin Hero 程式競賽前的練習,有個特別的體驗。 看題目一邊理解題意時,一邊就會在心理想像出程式流程的設計長得怎麼樣,比如輸入數值的型態為何?需不需要字串拆解?用什麼迴圈或遞迴編碼結構?一邊實作出來。或是歸納題意後,用數學運算公式整理簡化,比如真值表簡化換算,或是套用等差級數