iT邦幫忙

2023 iThome 鐵人賽

DAY 17
0
自我挑戰組

從零開始的 clojure系列 第 17

Day 17 Clojure- Data Structures - Review

  • 分享至 

  • xImage
  •  

前言

大家好,我是對於 Clojure 一無所知的菜鳥小白工程師。

今天我們來複習一下前幾章有關 Clojure 資料結構的內容,如下:

  • Numbers
  • Strings
  • Maps
  • Keywords
  • Vectors
  • Lists

Numbers

  • Clojure 中的數字(Numbers),和其他程式語言的表示方式沒有太大差別。

  • 有整數( integers)、浮點數( floats),以及比率( ratios):

    93 ;整數
    
    1.2 ;浮點數
    
    1/5 ;比率(用來表達有理數)
    

Strings

  • Clojure 中的字串(Strings),僅允許使用雙引號來定義。

    "Lord Voldemort" ; 有效
    
    'Lord Voldemort' ; 無效
    
  • Clojure 的字串不能使用「插值」串接,只允許通過 str 函數進行串聯。

    (def name "Chewbacca")
    (def new-name (str "\"Uggllglglglglglglglll\" - " name))
    
    (println new-name)
    ; => "Uggllglglglglglglglll" - Chewbacca
    

Maps

  • Clojure 中的映射(Maps),類似於其他語言中的字典(dictionaries)或哈希(hashes)。它們是一種將 某個值與其他值關聯起來的方式

    {:a 0 :b {:c "ho hum"}}
    
  • 映射可以使用 get 函數查找值:

    (get {:a 0 :b {:c "ho hum"}} :b)
    ; => {:c "ho hum"}
    

Keywords

  • 關鍵字(Keywords)是前綴有 : 的資料結構,它們主要用作映射(Maps)中的鍵(keys)。

    {:a 1 :b 2 :c 3}  ; :a, :b and :c 為關鍵字
    

Vectors

  • Clojure 中的向量(Vectors)類似於陣列(Arrays),基本上上它們是一個 0 索引( 0-indexed ,索引值編排從0 開始)的集合。

    [3 2 1]
    
  • 向量可以使用索引值來查找對應的值:

    (get [3 2 1] 2)
    ; => 1
    
  • 我們可以使用 conj 函數,將元素添加到向量中:

    (conj [1 2 3] 4)
    ; => [1 2 3 4]
    

Lists

  • 列表(Lists)與向量(Vectors)相似,它們都是包含一系列值的集合。

  • 列表的表示方式是將元素放入括號內,並在開頭加上單引號:

    '(1 2 3 4)
    ; => (1 2 3 4)
    

    請注意,當REPL 輸出列表時,它不會包括單引號。

  • 向量可以使用 nth 函數來查找對應的值:

    (nth '(:a :b :c) 2)
    ; => :c
    

    要注意,使用 nth 函數從 列表中檢索元素比使用 get 函數從 向量 中檢索元素慢。

  • 我們可以使用 conj 函數,將元素添加到列表的開頭:

    (conj '(1 2 3) 4)
    ; => (4 1 2 3)
    

Sets

  • 集合(Sets)是一組唯一值的集合。

    #{"kurt vonnegut" 20 :icicle}
    
  • 向量也可以使用 set 函數從現有的向量和列表中創建集合

    (set '(3 3 3 4 4))
    
    (set [3 3 3 4 4])
    ; => #{3 4}
    

小結

今天我們針對數字(Numbers)、字串(Strings)、映射(Maps)、關鍵字(Keywords)、向量(Vectors)、列表(Lists)等資料結構進行了複習。

在下一章節,我們將要開始學習 Function 函式。

參考文章


上一篇
Day 16 Clojure- Data Structures - Sets
下一篇
Day 18 Clojure - Function- Calling Function
系列文
從零開始的 clojure23
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0

今天才發現這麽棒的系列~~而且已經第17天了!! Yvonne加油順利完賽!

Yvonne iT邦新手 4 級 ‧ 2023-10-01 23:35:06 檢舉

居然被發現了!
感謝大大的鼓勵🙇‍♀️🙇‍♀️🙇‍♀️

我要留言

立即登入留言