學習 Kotlin 系列:一生綁定 val v.s 自由任命 var

更新於 發佈於 閱讀時間約 3 分鐘

行程 (Process),正如其名,指的是正在執行的程式 (Program),變數在其之中,是獲得命名,能保留自我的少數特殊存在。如果變數屬於全域變數 (Global Value),那麼其生命週期就會和行程一致,其他較短生命週期的都是局部變數 (Local Value)。

從一而終,在生命中止前不變其 reference 值的就是唯讀變數 val ,反之就是可讀寫 變數 var ,簡單的記法有 l 直線 r 分岔;也因為前者不能改變,所以必須在初始時就指定賦值 (Assign Value)。

賦值就是將單一對象指派給變數,做法是用一個等號將右邊對象 b 指派給左邊 a (a = b),至於數學上的相等則是用兩個等號 (a == b),關於其他數學邏輯判斷會在後續章節補充。

但所謂的唯讀並非是指整個變數不變化,而是指不能二次賦值,一生綁定,比如指定小李成為小隊長之後,這個職位再也不能換成其他人,小李本身想卸任也不行,但是小李本身的屬性還是和其他士兵一樣可以變化,增減年紀。

反之, var 就代表在類別限制下可以自由任命,只要是士兵,都有機會當一日小隊長。

所謂參數 (Parameter),是函數開放接口給外部來源參與其中的機會,可以傳遞基本型別、物件或是函數;如果來的是物件,還有可能被改造,以改造後的屬性離開函數,就像是士兵收到突擊命令,可能會受傷而歸。

在類別裡,無論是自身宣告的變數或是來自第一建構子函數的變數參數,都算是給了一個名義,類別從此有這樣一個屬性 (Property),屬性生命週期和物件一樣,可以在適當情境延伸引用,比如士兵的年齡到了就該退伍。

如果沒有名義,那就像是曇花一現,過眼雲煙,只在傳入的那個時間那個地點存在,無法隨意應用。用過就丟的特性正適合子彈這類消耗品或是不留下紀錄的命令。

raw-image

除了特例第一建構子函數以外,一般函數沒有屬性的概念,所以參數不接受非法設定 不存在的屬性;相對的,函數區塊裡可以宣告變數,和屬性的差異在於限定函數內部使用,生命週期和函數一樣。

raw-image

參數會自動被歸類成函數的生命週期 val 變數,和前述規則相同,函數不能賦值參數,但是可以改變參數屬性。

raw-image
raw-image

建構子函數會在後面的章節說明。


留言
avatar-img
留言分享你的想法!
avatar-img
Kate的沙龍
7會員
45內容數
和 Kotlin 相關的系列文章。 給程式初學者的「Kotlin 學習系列」 給正在實戰的工程師「Kotlin 實戰系列」
Kate的沙龍的其他內容
2023/03/22
比起說這是新技術,不如說是統一前端規格。 以前在不同框架下,類似功能的東西名字各不相同。比如輸入文字的物件,Android叫做EditText,iOS叫做UITextField,Html叫做TextBox或是input標籤。 這讓跨平台的開發者非常痛苦,痛不欲生。 而統一規格意味著,只要專心寫一套程
2023/03/22
比起說這是新技術,不如說是統一前端規格。 以前在不同框架下,類似功能的東西名字各不相同。比如輸入文字的物件,Android叫做EditText,iOS叫做UITextField,Html叫做TextBox或是input標籤。 這讓跨平台的開發者非常痛苦,痛不欲生。 而統一規格意味著,只要專心寫一套程
2021/11/23
去年停了近一年這裡的文章,其實是因為忙著將2020 iThome 鐵人賽的得獎作品——每年九月會舉辦的活動,連續三十天發表IT技術類文章——集結成書。 《老姐要用Kotlin寫專案:從 Server 到 Android APP 的開發生存日記》是以小說的敘事方式,將一對姐弟工程師合作
2021/11/23
去年停了近一年這裡的文章,其實是因為忙著將2020 iThome 鐵人賽的得獎作品——每年九月會舉辦的活動,連續三十天發表IT技術類文章——集結成書。 《老姐要用Kotlin寫專案:從 Server 到 Android APP 的開發生存日記》是以小說的敘事方式,將一對姐弟工程師合作
2021/11/22
此版本的目標畫面成果是: *金色名字。 *金色社交按鈕圖示,點擊按鈕另開對應的網頁或著顯示comming soon。 *名字和按鈕在網頁中央,如果網頁寬度不夠會換行,夠就不換行。
Thumbnail
2021/11/22
此版本的目標畫面成果是: *金色名字。 *金色社交按鈕圖示,點擊按鈕另開對應的網頁或著顯示comming soon。 *名字和按鈕在網頁中央,如果網頁寬度不夠會換行,夠就不換行。
Thumbnail
看更多
你可能也想看
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
全球科技產業的焦點,AKA 全村的希望 NVIDIA,於五月底正式發布了他們在今年 2025 第一季的財報 (輝達內部財務年度為 2026 Q1,實際日曆期間為今年二到四月),交出了打敗了市場預期的成績單。然而,在銷售持續高速成長的同時,川普政府加大對於中國的晶片管制......
Thumbnail
全球科技產業的焦點,AKA 全村的希望 NVIDIA,於五月底正式發布了他們在今年 2025 第一季的財報 (輝達內部財務年度為 2026 Q1,實際日曆期間為今年二到四月),交出了打敗了市場預期的成績單。然而,在銷售持續高速成長的同時,川普政府加大對於中國的晶片管制......
Thumbnail
Kotlin 中存取類別的屬性是一個重要的操作,透過 getter 與 setter 宣告方式讓我們可以使用 var 或 val 來宣告屬性。本篇文章介紹了在類別中宣告屬性的範例以及存取與修改屬性的操作。
Thumbnail
Kotlin 中存取類別的屬性是一個重要的操作,透過 getter 與 setter 宣告方式讓我們可以使用 var 或 val 來宣告屬性。本篇文章介紹了在類別中宣告屬性的範例以及存取與修改屬性的操作。
Thumbnail
「朝令夕改」其實是個常態,「朝令夕改」其實是個結果。主要的原因是,我們都在玩一個「從不確定到確定的遊戲」。既然整個過程是不確定的,而且就算有確定的目標,也是階段性的目標。所以,「朝令夕改」就是一個必然的結果。既然知道「變」一個是常態,「改」就是一個必然。
Thumbnail
「朝令夕改」其實是個常態,「朝令夕改」其實是個結果。主要的原因是,我們都在玩一個「從不確定到確定的遊戲」。既然整個過程是不確定的,而且就算有確定的目標,也是階段性的目標。所以,「朝令夕改」就是一個必然的結果。既然知道「變」一個是常態,「改」就是一個必然。
Thumbnail
為甚麼這樣說呢?最近這兩年,我不斷在反思,自己是否能夠接受現在的生活,目前的身分是一位已經準備當滿五年的一位軍人,公務員對家人跟現實來說確實是個很受保障的鐵飯碗,且現在志願役、軍事院校以及ROTC多種管道可以踏入軍中,門檻更是高中畢業就可以加入,對於很多高中畢業不想升學以及想趕快工作賺錢的人來說,這
Thumbnail
為甚麼這樣說呢?最近這兩年,我不斷在反思,自己是否能夠接受現在的生活,目前的身分是一位已經準備當滿五年的一位軍人,公務員對家人跟現實來說確實是個很受保障的鐵飯碗,且現在志願役、軍事院校以及ROTC多種管道可以踏入軍中,門檻更是高中畢業就可以加入,對於很多高中畢業不想升學以及想趕快工作賺錢的人來說,這
Thumbnail
我當過4年志願役,來回答你的問題。
Thumbnail
我當過4年志願役,來回答你的問題。
Thumbnail
#分享文【作家專欄】水兵Riley讀書會 2022.8.27(六)每日分享新文章 AM:00:45~01:18 NO.237 主題:認份但不認命 近來有位房仲姊姊,對我很支持跟信賴,除了自己的保障讓我幫她重新規劃,也讓她哥哥的保障讓我來安排,甚至朋友媽媽級的也介紹給我,當天談保障時,還在一旁陪伴,
Thumbnail
#分享文【作家專欄】水兵Riley讀書會 2022.8.27(六)每日分享新文章 AM:00:45~01:18 NO.237 主題:認份但不認命 近來有位房仲姊姊,對我很支持跟信賴,除了自己的保障讓我幫她重新規劃,也讓她哥哥的保障讓我來安排,甚至朋友媽媽級的也介紹給我,當天談保障時,還在一旁陪伴,
Thumbnail
單一職責原則(Single Responsibility Principle) 里氏替換原則(Liskov Substitution Principle) 依賴反轉原則(Dependence Inversion Principle) 最少知識原則(得墨忒耳定律)(Law Of Demeter)
Thumbnail
單一職責原則(Single Responsibility Principle) 里氏替換原則(Liskov Substitution Principle) 依賴反轉原則(Dependence Inversion Principle) 最少知識原則(得墨忒耳定律)(Law Of Demeter)
Thumbnail
在Python中,所有東西都是物件。執行程式碼a = 5,會建立5這個物件,然後給a一個reference,這個reference就是告訴a,它的值放在記憶體的哪個位置,要用時,就到那裡去拿。 看到這裡,很直覺的反應是:這不就是C裡頭的pointer嗎?!然後就沒再多想了。
Thumbnail
在Python中,所有東西都是物件。執行程式碼a = 5,會建立5這個物件,然後給a一個reference,這個reference就是告訴a,它的值放在記憶體的哪個位置,要用時,就到那裡去拿。 看到這裡,很直覺的反應是:這不就是C裡頭的pointer嗎?!然後就沒再多想了。
Thumbnail
某文青說過, 我如同水恣意地隨環境變化, 所以這新訓以來, 我沒有什麼太多的不適應。 只有每天五點五十分起床跟三千公尺跑步, 我翻了第一個白眼, 接下來, 區隊長分隊長那自稱大聲關心而非罵的呼喊聲, 隨時隨地充斥長廊上, 連聽見一根針掉落的寧靜似乎都不肯給, 再來, 一個又一個制式口號, 太自由,
Thumbnail
某文青說過, 我如同水恣意地隨環境變化, 所以這新訓以來, 我沒有什麼太多的不適應。 只有每天五點五十分起床跟三千公尺跑步, 我翻了第一個白眼, 接下來, 區隊長分隊長那自稱大聲關心而非罵的呼喊聲, 隨時隨地充斥長廊上, 連聽見一根針掉落的寧靜似乎都不肯給, 再來, 一個又一個制式口號, 太自由,
Thumbnail
賦值 (Assign Value) 想成套繩圈的動作, var 的繩圈是可以鬆綁重來的,val 套住對方就不能換了,而進階版 const val 綁住對方之後,對方的時間就被凍結了。 其實,以 Kotlin 的程式語言設計來說,比起賦值 (Assign Value),用賦址 (Assign
Thumbnail
賦值 (Assign Value) 想成套繩圈的動作, var 的繩圈是可以鬆綁重來的,val 套住對方就不能換了,而進階版 const val 綁住對方之後,對方的時間就被凍結了。 其實,以 Kotlin 的程式語言設計來說,比起賦值 (Assign Value),用賦址 (Assign
Thumbnail
行程 (Process),正如其名,指的是正在執行的程式 (Program),變數在其之中,是獲得命名,能保留自我的少數特殊存在。如果變數屬於全域變數 (Global Value),那麼其生命週期就會和行程一致,其他較短生命週期的都是局部變數 (Local Value)。 從一而終,在生命中止前不變
Thumbnail
行程 (Process),正如其名,指的是正在執行的程式 (Program),變數在其之中,是獲得命名,能保留自我的少數特殊存在。如果變數屬於全域變數 (Global Value),那麼其生命週期就會和行程一致,其他較短生命週期的都是局部變數 (Local Value)。 從一而終,在生命中止前不變
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News