clojure 新手指南(5):判斷&基本類型

判斷語句

在Clojure中,全部的語法規則最終都是S表達式。咱們如何知道哪些是判斷語句呢?這個很簡單,clojure中(lisp習慣)有個規定:對於判斷功能的函數,函數名後面都有一個「?」號。因此咱們只要看到後面帶問號的函數名,就知道這必定是一個判斷語句。很簡單吧! java

例如 "fn?"這個函數用於判斷傳入的參數是不是一個函數: ios

=>(fn? reduce)
true
=>(fn? 42)
false


基本類型


數字(Number)

Clojure支持很是豐富的數字類型的數據。每一種數字類型都提供了不一樣的計算精度,固然也佔用不一樣的內存空間。當咱們選擇不一樣的數據類型時,精度、內存消耗這些因素對計算的性能和準確度有着相當重要的影響。因此咱們必須對不一樣的數據類型有着深刻的瞭解。 shell

=>42
42

;;整形
=>(class 42)
java.lang.Integer

;;判斷是不是數字
=>(number? 42)
true

;;判斷是不是整形
=>(integer? 42)
true

=>21.42
21.42

;;查看類型
=>(class 21.42)
java.lang.Double

;;判斷是不是數字
=>(number? 21.42)
true

;;判斷是不是整形
=>(integer? 21.42)
false


整形和浮點型在其餘語言中都是常見的數據類型。可是分數(ratios)這種就很是少見了。在Clojure中,你能夠將二分之一寫成1/2,固然也能夠用0.5。 函數

=>1/2
1/2

=>(class 1/2)
clojure.lang.Ratio

=>(ratio? 1/2)
true

=>(* 1/2 1.0)
0.5
使用ratios類型的好處:

在進行數據計算時,特別是使用大量的除法時,咱們可使用分數形式。等到獲得最終的結果後,咱們在對分數求值。這樣最大的減小精度損失。(一旦遇到沒法整除的除法運算都極可能減小精度)。 性能


字符(Character)

字符表明一個字母、一個數字、一個標點符號或者其餘符號。在Clojure中,符號使用反斜槓「\」做爲開始。 spa

=>\C
 \C

=>(class \C)
java.lang.Character

=>(char? \C)
true


字符串 (String)

字符組成一塊兒就是字符串。字符串使用雙引號括起來(這招很通用)。 code

=>"some characters in a string"
"some characters in a string"

=>(class "some characters in a string")
java.lang.String

=>(string? "some characters in a string")
true

=>(str \C)
"C"


符號(Symbol)

符號被做爲一種標示符。爲了經常使用目的常常綁定到數據或者函數上。符號以前說過了,用單引號" ' "開頭,或者使用quote函數。 內存

=>'stuff
stuff

=> (quote stuff)
stuff

=>(class 'stuff)
clojure.lang.Symbol

=>(symbol? 'stuff)
true
符號也可經過字符串來建立:
=>(symbol "more stuff")
more stuff

=>(class (symbol "more stuff"))
clojure.lang.Symbol


關鍵字(Keyword)

關鍵字是另外一種類型的符號,它不適用於數據綁定的。關鍵字主要用於匹配。例如在哈希表中做爲key,它比使用字符串做爲key檢索起來要快的多。關鍵字以冒號」:「開頭。 字符串

=>:stuff
:stuff

=>(class :stuff)
clojure.lang.Keyword =>(keyword? :stuff)
true
關鍵字也能夠經過字符串來建立:
=>(keyword "stuff")
:stuff

=>(class (keyword "stuff"))
clojure.lang.Keyword


布爾值(Boolean)

這個太直觀了。就倆值:true 和 false string

=>true
true

=>false
false

=>(class true)
java.lang.Boolean

=>(class false)
java.lang.Boolean
相關文章
相關標籤/搜索