(map #(words %) indexes)
words は文字列のベクトルで、indexs は負でない整数のシーケンスです。#(...) は無名関数であり、 % はその引数を表すことを理解しています。アイデアは、指定されたインデックスで単語を取得することだと思いますが、誰かが匿名関数をより理解しやすい関数に書き直してくれませんか?
(map #(words %) indexes)
words は文字列のベクトルで、indexs は負でない整数のシーケンスです。#(...) は無名関数であり、 % はその引数を表すことを理解しています。アイデアは、指定されたインデックスで単語を取得することだと思いますが、誰かが匿名関数をより理解しやすい関数に書き直してくれませんか?
これは単に悪い書き方(map words indexes)
です。words
関数が何をするのか、または の値が何かはわかりませんindexes
が、このコードは のwords
各要素に対して関数を 1 回呼び出しindexes
、一連の結果を返します。
私が正しく理解しているなら、あなたは持っています:
(def words ["who" "what" "where" "when"])
(def indexes (range 4))
(map #(words %) indexes)
=> ("who" "what" "where" "when")
clojure の優れた点の 1 つは、標準のデータ構造がメンバーの関数でもあることです。これは、以下が同等であることを意味します。
(get words 1)
=> "what"
(words 1)
=>"what"
これは、マップとセットにも機能します。前者はキーを受け取り、値を返します。後者はリスト内の引数を探し、見つかった場合または nil の場合はそれを返します。
(def words ["apple" "banana" "cantaloupe" "date" "fig"])
(ifn? words) ;=> true
(words 0) ;=> "apple"
(words 1) ;=> "banana"
に等しい
(get words 0) ;=> "apple"
(get words 1) ;=> "banana"
そう
(map #(words %) [0 1])
の (遅延シーケンス) と同等です
((get words 0) (get words 1))