學習 Kotlin 系列:被凍結的時間 const val

閱讀時間約 2 分鐘
賦值 (Assign Value) 想成套繩圈的動作, var 的繩圈是可以鬆綁重來的,val 套住對方就不能換了,而進階版 const val 綁住對方之後,對方的時間就被凍結了。
其實,以 Kotlin 的程式語言設計來說,比起賦值 (Assign Value),用賦址 (Assign Reference) 來形容更為恰當,指定的是位址 (Reference, Address) 。開發的朋友可能聽過,以值呼叫,以位址呼叫(Call by value, Call by reference)。前者直接,後者間接。 Kotlin 全部都是 Call by reference 。
舉例來說,當我想呼叫小隊長小李時,前者是直接呼叫小李,後者呼叫的是小隊長。表面上結果是相同的,但其實只是現在相同。
以值來說,值因為是單純沒有指定性的,呼叫的只是小李的名字,而不是小李的人,當隔壁隊伍調來一個名字也是小李的人,電腦是辨別不出差異的。
以位址來說,假設小隊長是 var 設定,而這個呼叫延遲了數十年,也許那時已經換小小李上任小隊長,那麼結果就大大不同了;而如果是 val 設定,呼叫的還是小李,只是可能小李已經老了;而 const val 設定,讓小李一開始就是不會老的英靈
const val 時間凍結的效果自編譯 (Compile time) 完成起,相對於大部分變數是執行時 (Run time) 決定, const val 的設計不同,編譯時 (Compile time) 就決定了,也再不會變,所以 const val 只能寫在最頂層或是物件,因為這兩者也是編譯時決定。
const val 只能寫在最頂層或是物件。
編譯 (Compile) 就是把我們寫的高階語言翻譯成電腦可以理解的機器語言,如果要細述過程會花太多時間,也不是本章重點,這裡我們只需知道編譯期 (Compile time) 早於執行期 (Run time) 。
因為時間早早就被凍結了,所以和純 val 不同,不能指定有屬性可變化的類別,只能指定基本型別 (Basic Types) 。 Kotlin 官網文件有列舉所有基本型別,有興趣的朋友可以查看。
const val 只能指定基本型別。
const val 因為是固定的,所以連本來準備的彈性變動空間都省下來了,用專業的術語來說就是提高效能。對於開發者來說,可讀性也提高,知道這是寫死的變數,要重寫時會特別留意。
大家都知道翻譯總是很難表達原意,因此更理解程式語言特性,程式就能寫得更精準,電腦也越能理解我們要做的事。
共勉之。
avatar-img
6會員
45內容數
和 Kotlin 相關的系列文章。 給程式初學者的「Kotlin 學習系列」 給正在實戰的工程師「Kotlin 實戰系列」
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Kate的沙龍 的其他內容
行程 (Process),正如其名,指的是正在執行的程式 (Program),變數在其之中,是獲得命名,能保留自我的少數特殊存在。如果變數屬於全域變數 (Global Value),那麼其生命週期就會和行程一致,其他較短生命週期的都是局部變數 (Local Value)。 從一而終,在生命中止前不變
接續上次的士兵類別,提到名字用了 String 變數。 String 是字串的意思,在 Kotlin 裡,常見變數可以分成幾個基本資料型別:數字(Number)、字串(String)、布林(Boolean)。 差別在於行為模式不同,以加法為例,數字執行數學課上的四則運算的加法,字串卻做了連接,布林則
作為指揮官,如果只有一個部下也太令人傷心了。 為能夠有效率的取得大量的士兵,使用類型(Type)來廉價批發。 建立一個檔案「士兵.kt」,這次選 class,讓 IDE 幫我們初始化類別的程式碼 。 建立一個檔案「士兵.kt」,選 class 。  IDE 預設將 class 取名和檔案一樣。 初級
程式是個單純的小伙子,他會按照程式碼的內容執行動作,所以我們可以把函數當作給他的指令「單位」,不是最小單位,就只是單位。 以下是令人熱血沸騰的情境: 「射擊準備!發射角度東偏南33度,目標距離200公尺,風向正西速度每小時100公里,氣溫38度,濕度百分之20。」 「yes, my master.」
現在,開始建立第一個檔案吧,一樣用最簡單的 Hello World 示範。 在 kotlin 資料夾按右鍵選擇 New 裡的 Kotlin File/Class 。 雖然有許多格式可以選,但其實只是 IDE 提供初始程式碼的差別,完全可以中途更改,我們這次選最基本的 File 格式就好。 命名檔案和
會撰寫 Hello World 程式,證明我們已經推開程式語言的大門,成為會寫這門語言的開發者,所以,現在就先來寫 Hello World 吧。 目標:印出 Hello World 這串文字。
行程 (Process),正如其名,指的是正在執行的程式 (Program),變數在其之中,是獲得命名,能保留自我的少數特殊存在。如果變數屬於全域變數 (Global Value),那麼其生命週期就會和行程一致,其他較短生命週期的都是局部變數 (Local Value)。 從一而終,在生命中止前不變
接續上次的士兵類別,提到名字用了 String 變數。 String 是字串的意思,在 Kotlin 裡,常見變數可以分成幾個基本資料型別:數字(Number)、字串(String)、布林(Boolean)。 差別在於行為模式不同,以加法為例,數字執行數學課上的四則運算的加法,字串卻做了連接,布林則
作為指揮官,如果只有一個部下也太令人傷心了。 為能夠有效率的取得大量的士兵,使用類型(Type)來廉價批發。 建立一個檔案「士兵.kt」,這次選 class,讓 IDE 幫我們初始化類別的程式碼 。 建立一個檔案「士兵.kt」,選 class 。  IDE 預設將 class 取名和檔案一樣。 初級
程式是個單純的小伙子,他會按照程式碼的內容執行動作,所以我們可以把函數當作給他的指令「單位」,不是最小單位,就只是單位。 以下是令人熱血沸騰的情境: 「射擊準備!發射角度東偏南33度,目標距離200公尺,風向正西速度每小時100公里,氣溫38度,濕度百分之20。」 「yes, my master.」
現在,開始建立第一個檔案吧,一樣用最簡單的 Hello World 示範。 在 kotlin 資料夾按右鍵選擇 New 裡的 Kotlin File/Class 。 雖然有許多格式可以選,但其實只是 IDE 提供初始程式碼的差別,完全可以中途更改,我們這次選最基本的 File 格式就好。 命名檔案和
會撰寫 Hello World 程式,證明我們已經推開程式語言的大門,成為會寫這門語言的開發者,所以,現在就先來寫 Hello World 吧。 目標:印出 Hello World 這串文字。
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
無論你是內容創作者、學生還是專業工作者, 微論文都能幫助你提升寫作技能,精練思想。 微論文強調從經驗、意見和事件三方面入手, 使文章更具深度和多樣性。 在這篇文章中, 我將分享三個關於微論文的重要啟發, 幫助你更好地運用這種寫作方式。 ▋啟發1 - 深入理解
有一個東西叫「學習悖論」,是柏拉圖的美諾篇說的, 大意是這樣: 人沒辦法學習。 首先,一個人不能研究他知道的東西, 因為他已經知道了,無須再研究; 但是,他也不能研究他不知道的東西, 因為,他不知道他要研究的是什麼。 聽起來好像很詭異。 但是,先不要管裡面可能的邏輯、或歧義問
每當我學習新東西,總是感到無比的興奮。相較於買車出遊,我更喜歡透過摸索新事物來擴展自己的眼界。 ▋透過閱讀擴展視野 我主要透過購買書籍來進行探索,這也多虧父母從小到大提供的經濟支持。從幼稚園到博士畢業,我大概購買了四五千冊的書籍。父親甚至在我的房間外搭了一個鐵皮屋,專門用來存放我各式各樣
Thumbnail
@十年前,非常羨慕網路遊戲中,畫得美輪美奐的插畫,諸如龍,騎士,獅鷲怪物等等的電腦繪圖插畫。剛開始自己存錢買一塊日本的電腦繪圖板,想看youtube的電腦繪圖教學來畫,結果就畫成下面左邊那幅很好笑的德行(疑似幼稚園塗鴉)。 @後來有一次陪朋友去巨匠電腦報名,莫名其妙被櫃台小姐鼓動,用每期兩千元
本課程介紹如何學習 Kotlin 程式語言,KT 老師專門開設了一門從零開始學 Kotlin 程式設計的課程,非常適合對此有興趣的初學者。
Thumbnail
关于 Notion 的使用教程,在 Notion 相关社区已经有不少精品内容。这篇文章中,无意于探讨过于高级的技术,而是为准备使用 Notion 以及 相关的 FlowUs 用户提供一个详实、全面的使用教程。 本文会不定期更新。 数字花园:Notion 优质资源汇总) 使用反思 辅助工具·软件联动
Thumbnail
Roam Research 是最近几年,除了 Notion 以外,被广大笔记用户最为关注的产品。关于 Roam, 很多读者已经了解颇多。因此,对于 Roam 我只做简要评价,重点在于分享 Roam 使用所需要的学习资源和使用教程。 介绍 双链笔记赛道的开创者。 优点 📷 缺点 评价 免费使用
佛說:“度過一生,交換幾眼”,上一世看上去五百倍,我們可以改變一生。我們必須在輪迴的六個道路上堅持不懈,走來走去,結束然後重新開始。與所有事物一起練習,我們不知道哪一天我們可以跳出三個領域並具有靈性。那時,收斂消失了,預定的關係出現了,這被認為是正常的。
Thumbnail
研究發現孩子的腦區間被樞紐(hubs)組織圍繞,像是一組高效的交通系統或網路系統。研究發現,這套運輸系統運作良好的孩子不是沒有認知困難,就是患有非常特定的認知障礙(像是聽損),相反的,運輸系統連接不暢(poor)的孩子,則有廣泛而嚴重的認知問題。
Thumbnail
在開放空間討論的最後,我們談到現今主流教育,夠不夠重視學生的自主學習?    在場幾乎一直認為是還不夠的,甚至有些人認為完全沒有。 108課綱 我們先從現在剛實行不久的108課綱談起,針對這件事,大家主要提出了三種面向的觀點,一是同意108課綱希望促成學習多元化,以及培養核心素養的理念,但認為它沒
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
無論你是內容創作者、學生還是專業工作者, 微論文都能幫助你提升寫作技能,精練思想。 微論文強調從經驗、意見和事件三方面入手, 使文章更具深度和多樣性。 在這篇文章中, 我將分享三個關於微論文的重要啟發, 幫助你更好地運用這種寫作方式。 ▋啟發1 - 深入理解
有一個東西叫「學習悖論」,是柏拉圖的美諾篇說的, 大意是這樣: 人沒辦法學習。 首先,一個人不能研究他知道的東西, 因為他已經知道了,無須再研究; 但是,他也不能研究他不知道的東西, 因為,他不知道他要研究的是什麼。 聽起來好像很詭異。 但是,先不要管裡面可能的邏輯、或歧義問
每當我學習新東西,總是感到無比的興奮。相較於買車出遊,我更喜歡透過摸索新事物來擴展自己的眼界。 ▋透過閱讀擴展視野 我主要透過購買書籍來進行探索,這也多虧父母從小到大提供的經濟支持。從幼稚園到博士畢業,我大概購買了四五千冊的書籍。父親甚至在我的房間外搭了一個鐵皮屋,專門用來存放我各式各樣
Thumbnail
@十年前,非常羨慕網路遊戲中,畫得美輪美奐的插畫,諸如龍,騎士,獅鷲怪物等等的電腦繪圖插畫。剛開始自己存錢買一塊日本的電腦繪圖板,想看youtube的電腦繪圖教學來畫,結果就畫成下面左邊那幅很好笑的德行(疑似幼稚園塗鴉)。 @後來有一次陪朋友去巨匠電腦報名,莫名其妙被櫃台小姐鼓動,用每期兩千元
本課程介紹如何學習 Kotlin 程式語言,KT 老師專門開設了一門從零開始學 Kotlin 程式設計的課程,非常適合對此有興趣的初學者。
Thumbnail
关于 Notion 的使用教程,在 Notion 相关社区已经有不少精品内容。这篇文章中,无意于探讨过于高级的技术,而是为准备使用 Notion 以及 相关的 FlowUs 用户提供一个详实、全面的使用教程。 本文会不定期更新。 数字花园:Notion 优质资源汇总) 使用反思 辅助工具·软件联动
Thumbnail
Roam Research 是最近几年,除了 Notion 以外,被广大笔记用户最为关注的产品。关于 Roam, 很多读者已经了解颇多。因此,对于 Roam 我只做简要评价,重点在于分享 Roam 使用所需要的学习资源和使用教程。 介绍 双链笔记赛道的开创者。 优点 📷 缺点 评价 免费使用
佛說:“度過一生,交換幾眼”,上一世看上去五百倍,我們可以改變一生。我們必須在輪迴的六個道路上堅持不懈,走來走去,結束然後重新開始。與所有事物一起練習,我們不知道哪一天我們可以跳出三個領域並具有靈性。那時,收斂消失了,預定的關係出現了,這被認為是正常的。
Thumbnail
研究發現孩子的腦區間被樞紐(hubs)組織圍繞,像是一組高效的交通系統或網路系統。研究發現,這套運輸系統運作良好的孩子不是沒有認知困難,就是患有非常特定的認知障礙(像是聽損),相反的,運輸系統連接不暢(poor)的孩子,則有廣泛而嚴重的認知問題。
Thumbnail
在開放空間討論的最後,我們談到現今主流教育,夠不夠重視學生的自主學習?    在場幾乎一直認為是還不夠的,甚至有些人認為完全沒有。 108課綱 我們先從現在剛實行不久的108課綱談起,針對這件事,大家主要提出了三種面向的觀點,一是同意108課綱希望促成學習多元化,以及培養核心素養的理念,但認為它沒