欢迎!请查看关于页面以获取更多关于如何使用本站的信息。
原始标题是 '将冒号当作空白字符处理',这不是问题描述而是(有缺陷的)实现方法
为了与 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的读取语法了。如果我们支持JSON,难道也要支持ruby map字面量?在我看来,这个添加只会增加困惑,因为冒号在关键字中使用且关键字在map中频繁使用 - 例如在从XML解序列化或甚至JSON时。:)
评论来自:dnolen
Clojure不再只是一种在JVM上运行的编程语言。Clojure还可以在CLR和JavaScript上运行。特别是ClojureScript目前难以轻松处理JSON字面量 - 这是一个极为常见(尽管存在问题)的数据格式。通过在map字面量中允许冒号空白,Clojure数据结构可以有效地成为可扩展的JSON超集,提供JSON的简洁性和XML的表达性。
赞成一个。
评论由:timmc发表
Clojure 仅在 JVM 上托管;ClojureScript 在 JS VM 上运行。如果这对 CLJS 有用,它应该只是一个 CLJS 功能。
评论由:mikera发表
反对这个整个想法:这样会走向疯狂....
如果我们继续添加这种语法上的奇特之处,那么这种编程语言将会变得难以维护。拥有许多需要记住的特殊情况和歧义,这与简单正好相反。
如果人们想使用 JSON,那也行,但那时最好的做法是使用特定的 JSON 解析器/编写器,而不仅仅是将它粘贴到 Clojure 源代码中并期望它正常工作。
评论由:laczoka发表
反对原因如Allan Malloy和Mike Anderson所述
评论由:bozhidar发表
反对,不要重复 Ruby 中犯的错误...