資料型態

現在我們已經學會了幾種最基本的指令,用於宣告常數的let、用於宣告變數的var,以及用於把資料印出來的print,還有嚴格說起來不是一條指令,而是用於註解的//。我們可以開始在線上模擬器把玩看看。例如,想要電腦計算一個半徑是10的圓形面積,並印出「面積是314」這樣的訊息。

var 半徑 = 10 
let 圓周率 = 3.14
print (面積是 半徑*半徑*圓周率)

點擊執行!咦,怎麼會產生錯誤呢?

Swift:: Error: use of unresolved identifier '面積是'

這個錯誤的意思是電腦找不到名為面積是的資料,而我們這邊並不是想讓電腦印出名為面積是的資料裡面儲存著什麼,而只是單純地想印出面積是字樣,參考一下我們最開始進入模擬器時的程式碼:print("Hello World!"),原來要印出的字,是得用雙引號包住的,如此電腦會直接將它認為是一個,就像10或者3.14這樣。

print ("面積是" 半徑*半徑*圓周率)

還是產生了錯誤,我們看看錯誤訊息是什麼:

Swift:: Error: expected ',' separator

這個錯誤的意思是,電腦提示我們要用逗號分開「面積是」和「半徑*半徑*圓周率」這兩個不同的東西,順帶一提,連續印很多個不同的資料的時候,都得用逗號分開,例如print("教主的身高是", a, "體重是", b)。我們增加了逗號之後,執行看看。

Swift:: Error: binary operator '*' cannot be applied to operands of type 'Int' and 'Double'
print ("面積是", 半徑*半徑*圓周率)
                 ^

還是有錯誤!這行錯誤翻譯成中文意思是這樣的,電腦認為我們想對type 'Int'type 'Double'進行乘法,而它無法理解這種行為,這是什麼意思呢?想像你今天突然被問這樣的問題:「教主乘以三是多少?」

你可能會愣一下,然後回答「應該是三個教主吧。」科學上或許這不算是個完美的答案,但可以被接受。

那麼現在再問你一個新問題:「教主乘以兩個披薩,再加上六公里,是多少呢?」「神經病吧。」

電腦當然不會這麼不禮貌,它只會忠實的反映問題:「主人,教主和披薩和公里,是沒辦法做加法和乘法的啦。」這就是本章的重點「資料型態」:我們在使用資料時,還得和電腦說明它是什麼種類的資料,如果我們沒有說明的話,電腦就會自動推斷,像本章所寫的前兩行程式碼,電腦將var 半徑 = 10推斷為Int,並且將let 圓周率 = 3.14推斷為Double,當我們嘗試去對它們做乘法的時候,就像把披薩和公里相乘一樣,因為型態不同而產生了錯誤。

我們先給大家介紹幾種最基本的資料型態:

  • Int「整數型態」,如果一個數值沒有小數點,電腦會自動假設它是Int
  • Double「小數型態」,如果一個數值有小數點,電腦會自動假設它是Double
  • Float「小數型態」,與Double的差別是它使用較少的記憶體,因此容許的最大位數也較少。
  • String「字串型態」,字串可以是任意文字,甚至包含 Unicode 內含的表情符號如 🚀 等等,兩端加上雙引號。

現在我們了解了這個概念後,對程式碼做出些微調整。

var 半徑:Float = 10
let 圓周率:Float = 3.14
print ("面積是", 半徑*半徑*圓周率)

這次我們藉由資料名稱:資料型態這種語法,告訴電腦半徑圓周率都是Float類型(即使半徑是一個沒有小數點的數!),由於電腦知道怎麼計算Float之間的乘法,因此程式正確執行了!

results matching ""

    No results matching ""