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
相关文章
相关标签/搜索