由于1.2中引入的新协议,我尝试将一个项目从clojure 1.1迁移到1.2。但是当我尝试:use clojure-contri.duck-stream时,我得到了一个关于clojure.core中已经存在的'spit‘的警告。同样的问题也存在于clj-time.core和'extend‘,它们也存在于clojure.core中。
谁能解释一下解决这些愚蠢错误最优雅的方法是什么?
顺便说一句:从我的project.clj
:dependencies [[org.clojure/clojure "1.2.0"]
[org.clojure/clojure-contrib "1.2.0"]
[clojure-csv/clojure-csv "1.1.0"]
[org.shxiao/clojureql "1.0.0"]
[clj-time "0.1.0-SNAPSHOT"]]发布于 2010-09-26 23:53:28
您可以摆脱扩展警告(或者error?)将(:refer-clojure :exclude [extend])放入您的(ns ..)中。我提交了一个补丁来修复这个问题。我猜他们从来没有发布过新的快照。
至于duck streams位,这是因为spit曾经在duck streams中,但现在在clojure.core中。查看clojure.java.io。duck-stream的大部分功能在Clojure 1.2中达到了顶峰。如果您不想使用clojure.java.io,那么spit警告是相当无害的,但是当您使用clojure.contri.duck-streams(现在也是clojure.contrib.io )时,可以通过简单地排除它来消除它。
(ns foo (:use [clojure.contrib.duck-streams :exclude [spit]]))这里有一些clojure.java.io的API文档:http://clojuredocs.org/Clojure%20Core/clojure.java.io。在写这篇文章的时候,http://clojure.github.com/clojure/上似乎还没有任何关于它的文档。不知道为什么。
发布于 2011-03-25 21:25:55
虽然这些信息中的一些是正确的,但duck streams已经从contrib中删除,并将在1.2之后不再存在。无论如何,在核心Clojure中确实没有太多您不能做的事情。
发布于 2010-09-26 23:57:54
导入导致碰撞的函数以外的所有内容。然后spit将引用引入到clojure.core中的版本,这可能是首选版本
(use '[clojure.contrib.duck-streams :exclude 'spit])ns宏格式为:
(ns foo (:use [clojure.contrib.duck-streams :exclude 'spit]))https://stackoverflow.com/questions/3798507
复制相似问题