1. 程式人生 > 實用技巧 >兩種儲存思路

兩種儲存思路

儲存一張圖片,常見兩種思路:

  1. 儲存 寬高、每個畫素的 RGBA 值——點陣圖
  2. 儲存 寬高、每個幾何圖形——向量圖

一張圖片,如果幾何圖形關係明確,用向量圖來儲存,不但空間佔用少,而且資訊比點陣圖全。因為點陣圖沒有表達出幾何圖形的關係,在縮放時點陣圖只好失真。


同理,儲存一系列資料時:

  1. 如果不知道資料的關係,我們只好 像點陣圖一樣 把所有資料老老實實地存下來:

    [1, 2, 3, 5, 6];
    
  2. 如果知道資料的關係,我們就可以只存資料的關係。
    例如用 Generator 儲存一個斐波那契數列:

    function* fibGenerator() {
      let a = 1,
        b = 1;
    
      yield a;
      yield b;
      while (true) {
        [a, b] = [b, a + b];
        yield b;
      }
    }
    

在程式設計時,多數情況下我們用第一種方式儲存資料,例如用陣列存下所有資料。但有時我們也需要使用第二種方式,因為我們不知道需要多少資料。有時候是真的不知道;有時候是不想知道,比如為了解耦。