前言
?每逢学习一个新的语言时总要先了解这门语言支持的数据类型,因为数据类型决定这门语言所针对的问题域,像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.自动扩展为
延伸阅读
- ssh框架 2016-09-30
- 阿里移动安全 [无线安全]玩转无线电——不安全的蓝牙锁 2017-07-26
- 消息队列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 论文笔记【图片目标分割】 2017-07-26
- 词向量-LRWE模型-更好地识别反义词同义词 2017-07-26
- 从栈不平衡问题 理解 calling convention 2017-07-26
- php imagemagick 处理 图片剪切、压缩、合并、插入文本、背景色透明 2017-07-26
- Swift实现JSON转Model - HandyJSON使用讲解 2017-07-26
- 阿里移动安全 Android端恶意锁屏勒索应用分析 2017-07-26
- 集合结合数据结构来看看(二) 2017-07-26
