0
我试图给this脚本添加一些修改。这种方法是:Clojure更新列表中的地图
(defn- emit-class!
[[class fields]]
(let [vals {:view? (:view? class)
:type (if (:view? class) "View" "Object")
:package (:package class)
:name (str (:dollar-name class) Icepick/SUFFIX)
:target (:dotted-name class)
:parent (if-let [parent (:qualified-parent-name class)]
(str parent Icepick/SUFFIX)
(if (:view? class) "View" "Object"))
:fields fields}
file-name (str (:package class) "." (:dollar-name class) Icepick/SUFFIX)
file-object (file-object file-name (:element class))]
(doto (.openWriter file-object)
(.write (mustache/render-string template vals))
(.flush)
(.close))))
据我了解这个代码fields
是一个包含地图的列表。如果我打印带有
(doseq [fff fields
[k v] fff]
(info (str k " " fff)))
内容然后我得到这个内容
{
:name "counterAlt",
:enclosing-class
{
:package "com.some.package",
:dotted-name "DemoPresenter",
:dollar-name "DemoPresenter",
:annote (#object[com.sun.tools.javac.code.Attribute$Compound 0x6054b6e "@com.Bla"]),
:elem #object[com.sun.tools.javac.code.Symbol$ClassSymbol 0x21312e84 "com.evernote.android.common.demo.DemoPresenter"],
:view? false,
:qualified-parent-name nil
},
:bundler false,
:method "Int"
}
我想要做的就是所谓的fieldsCapitalize
另一个值添加到vals
变量,其中在列表中的地图是完全一样的,但只有name
是大写。在这个示例counterAlt
应该变成CounterAlt
。
我有一个工作大写的函数,但我无法创建更新的地图的另一个列表。在这个功能中实现这个最好的方法是什么?
可以缩写'myfunc'因此最好的办法:'(DEFN MYFUNC [M](更新玛:名字大写))'。 – Thumbnail