clojure-基本语法-符号及关键字

一、创建:  
Keyword: 
关键字是一个内部字符串; 两个同样的关键字指向同一个对象; 通常被用来作为map的key。 
Java代码   收藏代码
  1. user=> (keyword 'foo)  
  2. :foo  
  3. user=> (keyword "foo")  
  4. :foo  
  5. user=> (keyword "user" "foo")  
  6. :user/foo  
  7. user=> (keyword "abc def")  
  8. :abc def  
  9. user=> (keyword "abcdef")  
  10. :abcdef  
  11. user=> (keyword "/abc/def/ghi")  
  12. :/abc/def/ghi  


Symbol: 
Symbol是用来给东西命名的. 这些名字是被限制在名字空间里面的,要么是指定的名字空间,要么是当前的名字空间. 
Java代码   收藏代码
  1. user=> (symbol 'foo)  
  2. foo  
  3. user=> (symbol "foo")  
  4. foo  
  5. user=> (symbol "clojure.core" "foo")  
  6. clojure.core/foo  
  7. user=> (symbol "abc def")  
  8. abc def  
  9. user=> (symbol "abcdef")  
  10. abcdef  


二、用法:  
name: 
name函数接受一个参数,如果该参数为字符串,则直接返回该参数。如果不是字符串,则返回名称值。代码如下: 
Java代码   收藏代码
  1. user=> (name :foo)  
  2. "foo"  
  3. user=> (name 'x)  
  4. "x"  
  5. user=> (name "x")  
  6. "x"  


intern: 
intern函数有两个实现:(intern ns name)、(intern ns name val)。 
根据命名空间ns中查找是否存在符号name,不存在,则创建;最有一个参数val作为值与符号进行绑定,代码如下: 
Java代码   收藏代码
  1. user=> (intern 'user 'x)  
  2. #'user/x  
  3. user=> x  
  4. #<Unbound Unbound: #'user/x>  
  5. user=> (intern 'user '"1")  
  6. #'user/x  
  7. user=> x  
  8. "1"  


namespace: 
namespace函数根据给定的符号、或者关键字返回所在的命名空间名称,如果当前没有,则返回nil,代码如下: 
Java代码   收藏代码
  1. user=> (symbol 'xx)  
  2. xx  
  3. user=> (namespace 'user/xxx)  
  4. "user"  
  5. user=> (namespace 'xxx)  
  6. nil  
  7. user=> (def x :val)  
  8. #'user/x  
  9. user=> (namespace 'x)  
  10. nil  
  11. user=> (namespace 'user/x)  
  12. "user"  


三、检查:  
keyword?、symbol?用于检查指定的参数是否为关键字、或者是符号,是则返回true,否则返回false。 
Java代码   收藏代码
  1. user=> (symbol? 'x)  
  2. true  
  3. user=> (symbol? "x")  
  4. false  
  5. user=> (keyword? 'x)  
  6. false  
  7. user=> (keyword? :x)  
  8. true  
  9. user=> (keyword? "x")  
  10. false  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值