003_数据模型一览
1. 正如已經看到的, 數據模型的基本結構是樹狀的。 這棵樹可以很復雜, 并且可以有很大的深度, 比如:
2. 上圖中的變量扮演目錄的角色(比如: root, animals, mouse, elephant, python, misc)被稱為hashes(哈希表或哈希)。哈希表存儲其他變量(被稱為子變量), 它們可以通過名稱來查找(比如: "animals", "mouse"或"price")。
3. 存儲單值的變量(protected, price, message和foo)稱為scalars(標量)。
4. 如果要在模板中使用子變量, 那應該從根root開始指定它的路徑, 每級之間用點來分隔開。要訪問mouse的price, 要從root開始, 首先進入到animals, 之后訪問mouse, 最后訪問price。就可以這樣來寫animals.mouse.price。
5. 另外一種很重要的變量是sequences(序列)。它們像哈希表那樣存儲子變量, 但是子變量沒有名字, 它們只是列表中的項。比如, 在下面這個數據模型中, animals和misc.timeline就是序列:
6. 要訪問序列的子變量, 可以使用方括號形式的數字索引下標。索引下標從0開始(從0開始也是程序員的傳統), 那么第一項的索引就是0, 第二項的索引就是1等等。要得到第一個動物的名稱的話, 可以這么來寫代碼animals[0].name。要得到misc.timeline中的第二項(日期Jul 3, 2017)可以這么來寫misc.timeline[1]。
7. 標量類型可以分為如下的類別
7.1. 字符串: 就是文本, 也就是任意的字符序列, 比如上面提到的"elephant"。
7.2. 數字: 這是數值類型, 就像上面的price。在FreeMarker中, 字符串"50"和數字50是兩種完全不同的東西。前者是兩個字符的序列(這恰好是人們可以讀的一個數字), 而后者則是可以在數學運算中直接被使用的數值。
7.3. 日期/時間: 可以是日期-時間格式(存儲某一天的日期和時間), 或者是日期(只有日期, 沒有時間), 或者是時間(只有時間, 沒有日期)。
7.4. 布爾值: 對應著對/錯(是/否, 開/關等值)類似的值。比如動物可以有一個protected(受保護的)的子變量, 該變量存儲這個動物是否被保護起來的值。
8. 總結
8.1. 數據模型可以被看成是樹形結構。
8.2. 標量用于存儲單一的值。這種類型的值可以是字符串, 數字, 日期/時間或者是布爾值。
8.3. 哈希表是一種存儲變量及其相關且有唯一標識名稱的容器。
8.4. 序列是存儲有序變量的容器。存儲的變量可以通過數字索引來檢索, 索引通常從0開始。
總結
以上是生活随笔為你收集整理的003_数据模型一览的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 002_模板 + 数据模型 = 输出
- 下一篇: 004_模板一览