欢迎!请访问关于页面,以获取有关本站功能的更多信息。
原始标题为 '将冒号视为空白',这不是一个问题描述,而是一个(有缺陷的)实现方法。
为了兼容 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:应该是一个关键字}。
评论人:alexbaranosky
我认为这在视觉上会使人困惑。
评论人:laurentpetit
请,求你了,不要。
嗯,我犯了一个错误。我打字速度太快了,把逗号放在了错误的位置。在我的脑海中,我意思是冒号后面的形式应该有一个逗号。因此,{"a-json-key": 1234, ...} 是有效的,而 {"a-json-key": was-supposed-to-be-a-keyword "another-json-key" foo} 会因冒号无效标记而报错。然而,我觉得没有必要。
评论人:solussd
Clojure已经有了map的reader语法。如果我们支持JSON,我们也会支持Ruby的map文字?在我看来,这个增加只会增加困惑,因为冒号在关键字中用来,而关键字在映射中频繁使用——例如,在从XML反序列化或甚至是JSON。:)
评论人:dnolen
Clojure不再仅仅是运行在Java虚拟机上的语言。Clojure还可以运行在CLR和JavaScript上。特别是ClojureScript目前难以轻松处理JSON文字——一种极为常见(尽管存在问题)的数据格式。通过允许在映射文字中允许冒号空白字符——Clojure数据结构可以有效地成为可扩展的JSON超集——提供JSON的简洁性和XML的表达能力。
我也支持。
评论由:timmc 提出
Clojure 只在 JVM 上运行;ClojureScript 在 JS VM 上运行。如果这对 CLJS 有用,那么它应该只是一个 CLJS 特性。
评论由:mikera 提出
对此整个想法表示反对:这样会走向疯狂....
如果我们继续添加类似于这样的语法怪癖,那么语言将变得难以维护。拥有许多你必须记住的特殊情况和歧义,与简单正好相反。
如果人们想使用 JSON,那也行,但那时最好的方法是使用特定的 JSON 解析器/写入器,而不仅仅是将其粘贴到 Clojure 源代码中并期望它工作。
评论由:laczoka 提出
理由与 Allan Malloy 和 Mike Anderson 相同的反对
评论由:bozhidar 提出
不要重复 Ruby 中犯过的错误...