来自reader docs:
关键字就像符号一样,除了:
他们可以而且必须以冒号开头,例如:fred的
他们不能包含'。'或命名类。
以两个冒号开头的关键字在当前命名空间中解析
和
符号可以包含一个或多个非重复的':
。
因此,文档似乎应明确允许this
作为关键字。
这适用于我的REPL:
:my:keyword
这有效:
user=> {:my:keyword 1}
{:my:keyword 1}
甚至可以正常使用
user=> {:mykeyword
#_=> 1}
{:mykeyword 1}
但这并不是:
=> (clojure.edn/read-string (pr-str {:my:keyword 1}))
{:my:keyword 1}
我无法在包含冒号的关键字后面立即将新行放在哈希映射文字的中间。
我可以为其他关键字执行此操作。这很好用。
user=> {
#_=> :my:keyword
RuntimeException EOF while reading, starting at line 1
clojure.lang.Util.runtimeException (Util.java:221)
为什么呢?这只是读者的怪癖吗? AFAICT user=> {
#_=> :one
#_=> 1
#_=> }
{:one 1}
是一个语法上有效的关键字。我应该担心其他不一致吗?
我正在使用
:my:keyword
答案 0 :(得分:0)
正如你的最后一个例子所示,你还没有完成地图,所以我希望它会抛出:my:keyword
所有值的异常。这对我有用。
{
:my:keyword 1
}
=> {:my:keyword 1}