Clojure 为什么这个部分不起作用
这是我的密码: (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 为什么这个部分不起作用,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”]) “福,巴” =>(部分
请参阅
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时不应该出现。