作为Using Lisp or Scheme for runtime configuration of Java programs的延续,我正在寻找一个Java属性文件“replacement”,它可以包含除普通Java字符串之外的代码. Java属性文件如下所示:
key1=value1
key2=value2
...
为了好玩,我正在玩一个老年人JScheme(由于大小),但后来想到有一个与Clojure兼容的文件格式会很有用.这将允许使用相同的语法只是为了小“读取我的配置” – 使用Clojure的大型系统.接下来的想法是,现在可以评估值,而不仅仅是静态字符串.
我对Scheme或Clojure不太熟悉,但看起来两者都有矢量,但是快捷语法不同(#(…)与[…]相比).
是否有表示“Java属性”数据结构的语法,它既是有效的Scheme又是Clojure程序?请显示实际代码.
编辑:在查看(道具……)建议并用ELisp和JScheme刷新我的Lisp技能后,我发现
(list
"key1" "value1"
"key2" "value"
)
使用距离属性文件不太远的语法可能是最简单的方法.
解决方法:
假设您不想创建方案阅读器宏来阅读clojure地图文字(并且clojure不支持自定义阅读器宏),那么如何定义“props”功能:
(props 'key1 value1 'key2 value2 ...)
现在在clojure中定义道具为
(def props hash-map)
同样在方案中,你可以用任何一种语言来评估道具表达式.
你可以获得更多的时髦,并使道具成为引用键的宏(假设键是符号)或保持原样,并以必须引用键为代价获得更大的灵活性.