前言

?每逢学习一个新的语言时总要先了解这门语言支持的数据类型,因为数据类型决定这门语言所针对的问题域,像Bash那样内置只支持字符串的脚步明显就是用于文本处理啦。而数据类型又分为标量类型(Scalar)、结构类型(Struct)和集合类型(Collection),标题中的简单类型实质就是指标量类型。
?cljs中内置的标量类型比js的丰富得多,一方面方便了操作,另一个方面增加了学习成本,因此从js转向cljs时可能会略感不适,下面我们一起来认识吧!

标量类型一览

;; 空值/空集nil;; 字符串,必须使用双引号包裹"I am a string!";; 字符,以斜杆开头
\&
\newline

;; 布尔类型(Boolean),nil隐式类型转换为false,0和空字符串等均隐式类型转换为truetruefalse;; 长整型(Long)1;; 浮点型(Float)1.2;; 整型十六进制0x0000ff;; 指数表示法1.2e3

;; 键(Keyword),以:为首字符,一般用于Map作为key:i-am-a-key;; Symbol,标识符
i-am-symbol

;; Var
i-am-var

;; Special Form
;; 如if, let, do等
(if pred then else?)
(let [a 1] expr1 expr2)
(do expr*)

;; 函数
(fn [a]
    (println a))

;; 宏
(defmacro out [s]    `(println ~s))

Keyword真心不简单啊!

?位于cljs.core/Keyword的关键字并不是仅仅如上述那样简单,其实一共有3种定义方式:
1.所见即所得

;; 通过literal来定义:i-am-a-keyword:i-am-a-namespace/i-am-a-keyword;; 通过keyword函数来定义
(keyword "i-am-a-keyword")
(keyword "i-am-a-namespace" "i-am-a-keyword")

2.自动扩展为以当前命名空间为前缀

(ns cljs.user)
;; 自动扩展为以当前命名空间为前缀的keywork::keyword ;;=> :cljs.user/keyword

3.自动扩展为

        		

延伸阅读

学习是年轻人改变自己的最好方式-Java培训,做最负责任的教育,学习改变命运,软件学习,再就业,大学生如何就业,帮大学生找到好工作,lphotoshop培训,电脑培训,电脑维修培训,移动软件开发培训,网站设计培训,网站建设培训学习是年轻人改变自己的最好方式