前面我們提到 struct 定義的資料類型,指定值的語法與函式呼叫很類似:
商湯 = 商王(名號: "大乙湯", 即位: -1558, 在位: 12)
那麼,struct 類型與函式有何差別呢?我們用實體世界的事物來比喻看看。
函式有點像「自動販賣機」,裡面怎麼運作的不用管,我們只要知道投錢進去加上選擇,就能得到一瓶想要的飲料。函式的參數就像投入的錢與選擇,飲料就像函式回傳值。
struct 定義的資料類型,則比較像有結構的「模具」,呼叫一次這個類型,就會產出一個「物件」,例如玩具或手機,有其結構及屬性(如可更換顏色或配件),產出的是一個可變更屬性的物件,而不是一個單純的東西(值)。
在下面的範例中,我們對struct資料類型「商王」(模具)連續使用30次,就會產出30個變數(物件),每個變數都有不同的屬性,然後將這30個變數的屬性分別列印出來。
// 1-7b struct: 商王年表
// Created by Heman, 2021/07/25
// Reference: https://zh.wikipedia.org/wiki/商朝
struct 商王 {
var 名號: String
var 即位: Int //西元年
var 在位: Int //年
}
let 商湯 = 商王(名號: "大乙湯", 即位: -1558, 在位: 12)
let 商王世系: [商王] = [
商王(名號: "大乙湯", 即位: -1558, 在位: 12),
商王(名號: "外丙勝", 即位: -1546, 在位: 2),
商王(名號: "仲壬庸", 即位: -1544, 在位: 4),
商王(名號: "大甲至", 即位: -1540, 在位: 12),
商王(名號: "沃丁絢", 即位: -1528, 在位: 19),
商王(名號: "大庚辯", 即位: -1509, 在位: 5),
商王(名號: "小甲高", 即位: -1504, 在位: 17),
商王(名號: "大戊密", 即位: -1487, 在位: 75),
商王(名號: "雍己伷", 即位: -1412, 在位: 12),
商王(名號: "中丁莊", 即位: -1400, 在位: 9),
商王(名號: "外壬發", 即位: -1391, 在位: 10),
商王(名號: "河亶甲整", 即位: -1381, 在位: 9),
商王(名號: "祖乙滕", 即位: -1372, 在位: 19),
商王(名號: "祖辛旦", 即位: -1353, 在位: 14),
商王(名號: "沃甲踰", 即位: -1339, 在位: 5),
商王(名號: "祖丁新", 即位: -1334, 在位: 9),
商王(名號: "南庚更", 即位: -1325, 在位: 6),
商王(名號: "陽甲和", 即位: -1319, 在位: 4),
商王(名號: "盤庚旬", 即位: -1315, 在位: 28),
商王(名號: "小辛頌", 即位: -1287, 在位: 3),
商王(名號: "小乙斂", 即位: -1284, 在位: 10),
商王(名號: "武丁昭", 即位: -1274, 在位: 59),
商王(名號: "祖庚曜", 即位: -1215, 在位: 11),
商王(名號: "祖甲載", 即位: -1204, 在位: 33),
商王(名號: "廩辛先", 即位: -1171, 在位: 4),
商王(名號: "庚丁囂", 即位: -1167, 在位: 8),
商王(名號: "武乙瞿", 即位: -1159, 在位: 35),
商王(名號: "文丁托", 即位: -1124, 在位: 13),
商王(名號: "帝乙羨", 即位: -1111, 在位: 9),
商王(名號: "帝辛紂", 即位: -1102, 在位: 52)]
for 帝王 in 商王世系 {
print(帝王.名號, 帝王.即位, 帝王.在位)
}
執行結果如下圖。

從這個輸出結果,我們可以明顯看出來,「商王世系」其實就是一個30筆資料的表格,表格的每一筆資料就是一個變數,變數每一個屬性,就是表格的欄位,所以這個表格有3個欄位: 商王名號、即位年代、在位時間。
許多的資料表格集合在一起,就稱為「資料庫」,類似這樣可組成表格的資料,就稱為「結構化資料」。結構化資料最適合電腦處理,因為不管多少筆資料,用一個迴圈都能搞定。
在網路時代,結構化資料無所不在,從學校成績單、社團會員名單、網路購物商品列表到預約疫苗登記表....,太多了,整個網際網路幾乎就是一個無比龐大的資料庫!
所以說,struct 太重要了!
註解
什麼是「模具」?看過夜市賣的車輪餅或章魚燒嗎?做車輪餅的鐵製容器就是模具,將材料、餡料倒進去,就會「複製」產出相同外觀的車輪餅。
鴻海公司代工的蘋果手機,其金屬外殼也是透過模具做的,鴻海最早的本業就是做精密模具。我們現在使用的金屬或塑膠製品,大都是用模具大量製作的。
模具(或模子)的歷史非常久,前面提過的商王寶藏「三節提梁卣」就是用模具做的。古代的模具,用木頭做的稱為「模」,陶土做的稱為「範」,「模範」的意思就是從模具引申出來的。










































































































