我来这个:
(defn string->integer [str & [base]] (Integer/parseInt str (if (nil? base) 10 base))) (string->integer "10") (string->integer "FF" 16)
但它必须是一个更好的方法来做到这一点.
我想用leiningen来构建和开发我的clojure项目.有没有办法修改project.clj告诉它从本地目录中挑选一些罐子?
我有一些专有的罐子无法上传到公共回购.
另外,leiningen可以用来维护clojure项目的"lib"目录吗?如果我的一堆clojure项目共享相同的jar,我不想为每个jar维护一个单独的副本.
谢谢
我知道他们是同一个语言家族的方言,称为lisp,但究竟是什么区别呢?如果可能,您是否可以概述语法,特征,功能和资源等主题.
我是Clojure的新手,并且一直在使用Compojure编写基本的Web应用程序.不过,我正在用Compojure的defroutes语法碰壁,我认为我需要理解它背后的"如何"和"为什么".
看起来像Ring样式的应用程序以HTTP请求映射开始,然后只是通过一系列中间件函数传递请求,直到它被转换为响应映射,然后将其发送回浏览器.对于开发人员来说,这种风格似乎太"低级",因此需要像Compojure这样的工具.我可以看到在其他软件生态系统中需要更多的抽象,尤其是Python的WSGI.
问题是我不了解Compojure的方法.我们采用以下defroutesS表达式:
(defroutes main-routes
(GET "/" [] (workbench))
(POST "/save" {form-params :form-params} (str form-params))
(GET "/test" [& more] (str "<pre>" more "</pre>"))
(GET ["/:filename" :filename #".*"] [filename]
(response/file-response filename {:root "./static"}))
(ANY "*" [] "<h1>Page not found.</h1>"))
Run Code Online (Sandbox Code Playgroud)
我知道理解所有这些的关键在于一些宏观伏都教,但我还没有完全理解宏(还).我已经盯着defroutes源头很长一段时间了,但就是不明白!这里发生了什么?理解"大创意"可能会帮助我回答这些具体问题:
workbench功能)中访问Ring环境?例如,假设我想访问HTTP_ACCEPT标头或请求/中间件的其他部分?{form-params :form-params})?在解构时我可以使用哪些关键字?我真的很喜欢Clojure,但我很难过!
我是Clojure的新手,你能不能给我解释现实场景.我的意思是,在哪里使用Ref,Var,Agent,Atom.我读过书,但是,仍然无法理解现实世界的例子.
我正在努力在Grails 2.0.0(和2.1.0-SNAPSHOT)中扩展Grails Clojure插件,我想将它更新为Clojure 1.3.0并添加clojure.tools.logging.
Clojure的一个编译过程中抛出一个异常
代理一的ByteArrayOutputStream中clojure.tools.logging的日志流功能:
ClassCastException: clojure.asm.Type cannot be cast to clojure.lang.IFn
(https://gist.github.com/a6ae681c37091a3d2379)
我去和删除clojure.tools.logging,并写了一个剥离下来的代理的Object:
(proxy [java.lang.Object] [] (toString [] "proxy's toString"))
它也扔了同样的ClassCastException信息.
我试图打印macroexpand-1的的代理,得到了同样的事情.
我恢复到Clojure 1.2.0并且代理工作再次正常.
我尝试了1.4.0的许多版本,它们表现出与1.3.0相同的行为.1.2.1也引发了某种异常,但我试图达到1.3.0,所以我没有花太多时间.
堆栈跟踪指向"GEN-方法功能的一项所定义的设的形式generate-proxy中core_proxy.clj.
我println在那附近添加了一小部分,看看我能不能发现正在发生的事情.也许下一个陈述会背叛读者对我的巨大误解,但只是添加那些println改变了编译时行为的方式我完全没想到.异常位置和异常类型完全改变,即使所有Clojure测试mvn package继续通过.
例如,println在开始生成字节码之前,只需在gen-method中添加一个单元,就会导致Clojure抛出
ClassCastException: clojure.lang.PersistentArrayMap cannot be cast to …
我需要一个匹配blahfooblah但不匹配的正则表达式blahfoobarblah
我希望它只匹配foo和foo周围的所有东西,只要它没有跟着bar.
我尝试使用它:foo.*(?<!bar)它非常接近,但它匹配blahfoobarblah.背后的负面看法需要匹配任何东西而不仅仅是酒吧.
我正在使用的特定语言是Clojure,它使用Java正则表达式.
编辑:更具体地说,我也需要通过blahfooblahfoobarblah但不是blahfoobarblahblah.