为什么Clojure阅读器会对包含冒号的关键字感到困惑?
从: 关键字类似于符号,除了: 它们可以而且必须以冒号开头,例如:fred 它们不能包含“.”或名称类 在当前命名空间中解析以两个冒号开头的关键字 及 符号可以包含一个或多个不重复的“:” 因此,看起来文档应该明确允许将为什么Clojure阅读器会对包含冒号的关键字感到困惑?,clojure,clojure-repl,Clojure,Clojure Repl,从: 关键字类似于符号,除了: 它们可以而且必须以冒号开头,例如:fred 它们不能包含“.”或名称类 在当前命名空间中解析以两个冒号开头的关键字 及 符号可以包含一个或多个不重复的“:” 因此,看起来文档应该明确允许将:my:keyword作为关键字 这在我的REPL中起作用: user=> {:my:keyword 1} {:my:keyword 1} 这是有效的: user=> {:mykeyword #_=> 1} {:mykeyword 1} 即使这样也行 =
:my:keyword
作为关键字
这在我的REPL中起作用:
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)
在一个包含冒号的关键字后面,我不能在一个HASMAP文字的中间放一个换行符。 我可以为其他关键字这样做。这样行
user=> {
#_=> :one
#_=> 1
#_=> }
{:one 1}
为什么??这只是读者的一个怪癖吗?AFAICT:my:keyword
是语法上有效的关键字。我应该担心其他不一致吗
我正在使用
REPL-y 0.3.5,
nREPL 0.2.6
Clojure 1.6.0
正如您的最后一个示例所示,您尚未完成映射,因此我希望它在
:my:keyword
为的任何值处抛出异常。这对我有用
{
:my:keyword 1
}
=> {:my:keyword 1}
正如您的最后一个示例所示,您尚未完成映射,因此我希望它在
:my:keyword
为的任何值处抛出异常。这对我有用
{
:my:keyword 1
}
=> {:my:keyword 1}
也许有助于了解,你的回复是什么。可以与java-cp clojure-1.7.0-RC1.jar clojure.main等兼容。我在一个leinrepl(1.6)中得到了同样的错误,这可能有助于了解您的repl是什么。可以与java-cp clojure-1.7.0-RC1.jar clojure.main等兼容。我在一个leinrepl(1.6)中得到了同样的错误,这可能有助于了解您的repl是什么。可以与java-cp clojure-1.7.0-RC1.jar clojure.main等兼容。我在一个lein repl(1.6)中遇到了同样的错误。我的repl不符合您的期望,请参阅最近的编辑。您使用的是哪个版本?您在问题中的示例没有关闭映射,您能用map}closed再次检查吗?对不起,我不明白。你是说我遇到麻烦的那个例子吗?在本例中,在我关闭映射之前抛出异常,这就是我的问题。我的REPL不符合您的期望,请参阅最近的编辑。您使用的是哪个版本?您在问题中的示例没有关闭映射,您能用map}closed再次检查吗?对不起,我不明白。你是说我遇到麻烦的那个例子吗?在本例中,在我关闭映射之前抛出异常,这就是我的问题。我的REPL不符合您的期望,请参阅最近的编辑。您使用的是哪个版本?您在问题中的示例没有关闭映射,您能用map}closed再次检查吗?对不起,我不明白。你是说我遇到麻烦的那个例子吗?在本例中,在关闭映射之前抛出异常,这就是我的问题。