私はベクトルの中に文字列を入れる関数を構築していました。Clojure無名関数
私も把握することはできません、なぜこの仕事ん:
(mapv (fn [i] [i]) '("hi" "there"))
が、これは動作しません:
(mapv #([%]) '("hi" "there"))
私はベクトルの中に文字列を入れる関数を構築していました。Clojure無名関数
私も把握することはできません、なぜこの仕事ん:
(mapv (fn [i] [i]) '("hi" "there"))
が、これは動作しません:
(mapv #([%]) '("hi" "there"))
参照:https://clojuredocs.org/clojure.core/fn#example-560054c2e4b08e404b6c1c80
で略:#(f) == (fn [] (f))
、従って#([1 2 3]) == (fn [] ([1 2 3]))
希望します。
#()
は、最初の引数として関数を想定しています。あなたも、単に行うことができます。もちろん、
(map #(vector %) (range 5))
> ([0] [1] [2] [3] [4])
:
(map vector (range 5))
> ([0] [1] [2] [3] [4])
As glts mentioned、リスト内でその身体を包み込みreader macro匿名関数を、次のように:
あなたは#(vector %)
などを行うことができます
(read-string "#([%])")
;=> (fn* [p1__20620#] ([p1__20620#]))
通常、y OUは、その身体ベクトルである匿名関数を記述する必要があり、あなたの質問にやったように、私はちょうどfn
マクロを使用してお勧めします。この場合
(mapv (fn [i] [i]) '("hi" "there"))
;=> [["hi"] ["there"]]
を、しかし、あなたの(fn [i] [i])
は同等ですvector
機能を内蔵し、私はあなたが使用することをお勧めしたい、代わりにその:
(mapv vector '("hi" "there"))
;=> [["hi"] ["there"]]
回答は[こちら](http://stackoverflow.com/q/13204993)と[ここ](のhttp://のstackoverflow。 com/q/4921566)。 – glts