Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Clojure 为什么这个部分不起作用_Clojure_Partial - Fatal编程技术网

Clojure 为什么这个部分不起作用

Clojure 为什么这个部分不起作用,clojure,partial,Clojure,Partial,这是我的密码: (def partial-join (partial (clojure.string/join ","))) =>(clojure.string/join "," ["foo" "bar"]) "foo,bar" => (partial-join ["foo" "bar"]) (def partial join(partial(clojure.string/join“,”)) =>(clojure.string/join“,”[“foo”“bar”]) “福,巴” =>(部分

这是我的密码:

(def partial-join (partial (clojure.string/join ","))) =>(clojure.string/join "," ["foo" "bar"]) "foo,bar" => (partial-join ["foo" "bar"]) (def partial join(partial(clojure.string/join“,”)) =>(clojure.string/join“,”[“foo”“bar”]) “福,巴” =>(部分联接[“foo”“bar”]) 它提出了一个例外:

ClassCastException java.lang.String不能强制转换为clojure.lang.IFn.repl/eval12557(表单-init2162333644921704923.clj:1)


请参阅
clojure.string/join
的文档

clojure.string/join
([coll] [separator coll])
  Returns a string of all elements in coll, as returned by (seq coll),
   separated by an optional separator.
当为
clojure.string/join
只提供一个参数时,此函数将其参数视为集合,因此:

user=> (clojure.string/join ",")
","
接下来,请参阅
partial
的文档

clojure.core/partial
([f] [f arg1] [f arg1 arg2] [f arg1 arg2 arg3] [f arg1 arg2 arg3 & more])
  Takes a function f and fewer than the normal arguments to f, and
  returns a fn that takes a variable number of additional args. When
  called, the returned function calls f with args + additional args.
当只提供一个参数时,
partial
返回其参数

user=> (partial (clojure.string/join ",")) 
","
试试这个:

user=> (def partial-join (partial clojure.string/join ","))
#'user/partial-join
user=> (partial-join ["a" "b"])
"a,b"

哇。Stewart Holloway以这个问题为例,说明了如何在费城的Clojure Conj不调试Clojure:


我不认为这是一个糟糕的noob问题(被接受的答案非常有用),但他真的很讨厌它的措辞/框架。

agatain是正确的,但请记住
#(clojure.string/join“,”)
也很有效。您添加了一层额外的括号,在使用partial时不应该出现。