使用clojure.string时,我收到以下警告
WARNING: replace already refers to: #'clojure.core/replace in namespace: tutorial.regexp, being replaced by: #'clojure.string/replace
WARNING: reverse already refers to: #'clojure.core/reverse in namespace: tutorial.regexp, being replaced by: #'clojure.string/reverse
Run Code Online (Sandbox Code Playgroud)
我的clojure脚本是:
(ns play-with-it
(:use [clojure.string]))
Run Code Online (Sandbox Code Playgroud)
有没有办法解决这些警告?
Mic*_*zyk 15
是的,切换到
(ns play-with-it
(:require [clojure.string :as string]))
Run Code Online (Sandbox Code Playgroud)
然后说例如
(string/replace ...)
Run Code Online (Sandbox Code Playgroud)
打电话clojure.string的replace功能.
使用:use,您可以将所有Vars clojure.string直接引入您的命名空间,并且由于其中一些Vars的名称与Vars冲突clojure.core,您会收到警告.然后你必须说clojure.core/replace要知道通常简单的叫什么replace.
名字的冲突是设计的; clojure.string是这样require的别名d.str并且string是最常选择的别名.
除了Michał的答案,你可以从clojure.core以下地方排除变种:
user=> (ns foo)
nil
foo=> (defn map [])
WARNING: map already refers to: #'clojure.core/map in namespace: foo, being replaced by: #'foo/map
#'foo/map
foo=> (ns bar
(:refer-clojure :exclude [map]))
nil
bar=> (defn map [])
#'bar/map
| 归档时间: |
|
| 查看次数: |
1872 次 |
| 最近记录: |