clojure 新手指南(5):判断&基本类型

判断语句

在Clojure中,所有的语法规则最终都是S表达式。我们如何知道哪些是判断语句呢?这个很简单,clojure中(lisp习惯)有个规定:对于判断功能的函数,函数名后面都有一个“?”号。所以我们只要看到后面带问号的函数名,就知道这一定是一个判断语句。很简单吧!

例如 "fn?"这个函数用于判断传入的参数是否是一个函数:

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

基本类型


数字(Number)

Clojure支持非常丰富的数字类型的数据。每一种数字类型都提供了不同的计算精度,当然也占用不同的内存空间。当我们选择不同的数据类型时,精度、内存消耗这些因素对计算的性能和准确度有着至关重要的影响。所以我们必须对不同的数据类型有着深入的了解。

=>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中,符号使用反斜杠“\”作为开始。

=>\C
 \C

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

=>(char? \C)
true

字符串 (String)

字符组成一起就是字符串。字符串使用双引号括起来(这招很通用)。

=>"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

=>true
true

=>false
false

=>(class true)
java.lang.Boolean

=>(class false)
java.lang.Boolean

转载于:https://my.oschina.net/clopopo/blog/142314

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值