欢迎!有关此功能更多信息的说明,请参阅 关于 页面。
原始标题为 '将冒号视为空格',这不是问题描述,而是一种(有缺陷的)实现方法
为了与 JSON 兼容没有空格时的已知问题 - x:true 和 y:false
评论由:tsdh
在此讨论: https://groups.google.com/d/msg/clojure/XvJUzaY1jec/l8xEwlFl8EUJ
评论由:hiredman
请不要
评论由:tavisrudd
Alan Malloy 在 Google 群组讨论中提出了一个很好的观点(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
如果支持JSON,Clojure也会支持Ruby的map文字?在我看来,这种增加会增加困惑,因为冒号用于关键字,而关键字在映射中也经常被使用 - 例如,从XML或甚至JSON解序列化时。:)
评论者:dnolen
Clojure不再是仅托管在JVM上的语言。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 中的错误...