欢迎!有关如何工作的更多信息,请参阅 关于 页面。
原标题为 '将冒号视为空白',这不是一个问题描述,而是一个(有缺陷的)实现方法
为了与JSON兼容没有空格时的已知问题 - x:true 和 y:false
评论者:tsdh
在此讨论: https://groups.google.com/d/msg/clojure/XvJUzaY1jec/l8xEwlFl8EUJ
评论者:hiredman
请不要
评论者:tavisrudd
Alan Malloy 在谷歌群组讨论 (https://groups.google.com/d/msg/clojure/XvJUzaY1jec/aVpWBicwGhsJ) 中提出了一个关于尾随(或浮动)冒号和前导冒号之间意外混淆的良好观点"它甚至不简单到“让它们是空白”,因为显然你想 (read-string "{a: b}"),请输入:结果为 (hash-map 'a 'b),但 (read-string "{a :b}") 的结果为("hash-map 'a :b")."
通过仅将冒号视为逗号后的空格,可以避免这个问题。由于 json 的贴切入法似乎是关键动机,逗号无论如何都会存在:有效的 {"v":, 1234} 与语法错误 {a-key: should-be-a-keyword}。
评论者:alexbarnosky
我认为这可能会引起视觉上的混淆。
评论者:laurentpetit
请,求您,不要这样。
啊,我犯了一个错误。我打字太快了,把逗号放错了位置。在我脑海中,我意思是冒号之后的形式需要有逗号。因此,{"a-json-key": 1234, ...} 是有效的,而 {"a-json-key": was-supposed-to-be-a-keyword "another-json-key" foo} 会抱怨冒号是无效的标记。我不认为需要它。
评论者:solussd
Clojure 已经有映射的读取器语法。如果我们支持 JSON,我们也支持 ruby 映射字面量吗?在我看来,这个添加只会增加混淆 - 冒号在关键字中已经使用,而关键字在映射中经常使用 - 例如,从 XML 或 JSON 反序列化时。:)
评论者:dnolen
Clojure 已不再是仅托管在 JVM 上的语言。Clojure 还可以在 CLR 和 JavaScript 上托管。特别是 ClojureScript 目前难以轻松处理 JSON 字面量 - 这是一个非常常见(尽管有问题)的数据格式。通过允许在映射字面量中使用冒号空格,Clojure 数据结构可以有效地成为可扩展的 JSON 子集 - 结合了 JSON 的简洁性和 XML 的表达性。
我也支持。
由: timmc 发表评论
Clojure 仅托管在 JVM 上;ClojureScript 托管在 JS VM 上。如果这对 CLJS 有用,它应该只是一个 CLJS 功能。
由: mikera 发表评论
-1 对于整个想法:这样会导致疯狂...
如果我们继续添加这样的语法怪异之处,那么语言将变得难以维护。有太多你必须记住的特殊情况和歧义,这与简单完全相反。
如果人们想使用 JSON,那也无可厚非,但那时最好的方法是使用特定的 JSON 解析器/写入器,而不仅仅是将其粘贴到 Clojure 源代码中并期望它能够工作。
由: laczoka 发表评论
-1 原因是 Allan Malloy 和 Mike Anderson 提到的
由: bozhidar 发表评论
-1 不要重复 Ruby 中的错误...