iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 2
0

何謂常數與變數?(Constants and Variables)

當我第一次看到這兩個詞的反應,第一件事就是Google,

我們很幸運的活在一個資訊發達,任何問題基本上Google都可以迎刃而解,

舉凡從程式語言的問題、生理病痛、各種疑難雜症,基本上都難不倒Google大神。

在看到字面上的意思的時候,會覺得常數跟變數是數學領域的一部分,自然適用於數字相關的東西。

但事實上在Swift的世界當中,不僅僅只適用於與數字有關的Int、Double、Float...

舉凡只要是在宣告任何一個型別之前Character、String、Bool、Array、Dictionary、Set等等

沒看過這些型別?沒關係,接下來也會一一介紹到,不用擔心

都必須要先定義這個型別本身是常數還是變數。

因此在我所瞭解的常數與變數的定義很簡單,就是↓↓↓↓↓↓↓↓↓

常數代表著:型別宣告之後就【無法改變】其宣告的內容

let characterLet:Character = "A"
let stringLet:String = "Test"
let numberIntLet:Int = 1
let numberDoubleLet:Double = 1.0
let numberFloatLet:Float = 1.0
let trueOrFalseLet:Bool = true

當你嘗試修改宣告為常數的型別時,系統就會跳出警告告知這個型別為常數,是否要改變為變數?
https://ithelp.ithome.com.tw/upload/images/20190917/20120063EWHd8OFiFw.png

變數代表著:型別宣告之後仍【可改變】其宣告的內容

var characterVar:Character = "A"
var stringVar:String = "Test"
var numberIntVar:Int = 1
var numberDoubleVar:Double = 1.0
var numberFloatVar:Float = 1.0
var trueOrFalseVar:Bool = true

如果將型別宣告為變數,則可以隨時改變其值的內容。
https://ithelp.ithome.com.tw/upload/images/20190917/20120063yuC8UcN2L4.png

因此在往後的開發APP中,在創建一個物件或者是型別的時候,要去考慮的是之後的值會不會變動?
假設這個值明明都沒被變動過,卻宣告為變數,此時你就會看到系統跳出黃色的驚嘆號提醒,
這個值都沒有任何的改變,是否要改為常數?(如下圖警訊)
https://ithelp.ithome.com.tw/upload/images/20190917/201200634944ov5Y0W.png

為了不要勞煩細心系統一直不厭其煩的提醒,在未確定是否會改變其值之前,建議還是先養成設為常數的好習慣。

不過也是要注意有些值,知道未來有可能會被改變,預設為變數才不會讓程式報錯。
像這種型別Int設為HP跟MP的參數時,很明顯的就可以看得出來,未來隨時會改變,這種時候請毫不猶豫地設為變數。
但像是人物名稱,怪物名稱這種基本上是不可變的值,也請毫不猶豫地給他一個let(常數)吧!
https://ithelp.ithome.com.tw/upload/images/20190917/20120063wxs6SAGzUT.png

不過俗話說的好,人算不如天算、凡事有例外。

在我學習的過程中,我也遇過例外的狀況,明明常數是不可變的值,為什麼碰上了Reference Type就可以改變其值?
https://ithelp.ithome.com.tw/upload/images/20190917/201200633MG79ZwGui.png

而相同的情況,碰上Value Type卻會出現型別為常數,無法指派值給numbers?
https://ithelp.ithome.com.tw/upload/images/20190917/20120063177IVNAnx7.png

我們可以在接下來的日子一起探討這個神奇的Swift帶來的各種有趣的現象,一起探索這個廣大的世界。

在此篇,其實對於沒有看過或不瞭解的東西,就先放到一邊沒關係,最重要的是知道什麼是常數,什麼是變數即足矣!

凡事量力而為,不愧對自己為原則,不用想著一步登天,隨著自己的學習步伐前進,學習是一條漫無止盡的路,欲速則不達,路遙知馬力、日久見Swift心。

共勉之!


上一篇
從零開始的學習之旅-Day1
下一篇
從零開始的學習之旅-Day3
系列文
【自我挑戰】一步一腳印,每天進步一點的Swift自學之路。11
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言