गुजर विभाजन के लिए एक अन्य समारोह में clojure

0

सवाल

मैं बस शुरू कर दिया clojure लेकिन मैं प्रतीत नहीं कर सकते हैं बाहर आंकड़ा करने के लिए उपयोग/निर्माण उच्च आदेश कार्यों के लिए है ।

मैं विभाजित का एक संग्रह है और मैं चाहते हैं पारित करने के लिए है कि में एक अन्य समारोह है कि कुछ करना होगा करने के लिए खिड़की के आइटम नहीं है । मैं यकीन नहीं कर रहा हूँ जाने के लिए कैसे यह कर के बारे में.

(def foo [:a :b :c :d :e])

(partition 3 1 foo)
;;=> ((:a :b :c) (:b :c :d) (:c :d :e))

(defn bar [start next end])

मुझे लगता है कि बुनियादी रूपरेखा के लिए किया जाएगा.

(defn faz [collect]
    (partition 3 1 collect)
    ;;maybe do here before passing
    (bar stand next end)
)

मैं हो सकता है खुद के आगे हो रही है लेकिन मैं भी वहाँ रहे हैं अन्य कार्यों की तरह कम लागू करते हैं और वे क्या कर सकते हैं कुछ इसी तरह सही है? हालांकि, सबसे उदाहरण मैं देख रहा हूँ यह है, तो वे कार्रवाई करने पर दो आइटम एक समय में कर रहे हैं, जो इसी तरह करने के लिए (partition 2 1 foo)

clojure higher-order-functions
2021-11-20 10:49:57
2

सबसे अच्छा जवाब

1

आप क्या कर सकते हैं कुछ की तरह

(defn bar [start next end])


(defn faz [collect]
  (let [partitions (partition 3 1 collect)]
    (apply bar partitions)
    ))

या अगर आप चाहते हैं कॉल करने के लिए bar सीधे, आप का उपयोग कर सकते हैं destructuring

(defn bar [start next end])

(defn faz [collect]
  (let [partitions (partition 3 1 collect)
        [start next end] partitions]
    (bar start next end)
    ))
2021-11-20 11:08:30
0

अपने प्रश्न सामान्य है और वहाँ है और अधिक तरीकों से इस लक्ष्य को हासिल करने के आधार पर अपेक्षित परिणाम और इस्तेमाल किया समारोह है ।

अगर आप चाहते हैं वापस करने के लिए अनुक्रम के परिणाम का उपयोग करें map और apply:

(defn results-for-triplets [collect]
  (map #(apply + %) (partition 3 1 collect)))

(results-for-triplets [1 2 3 4 5])
=> (6 9 12)

बेहतर पठनीयता के लिए, आप उपयोग कर सकते हैं ->> मैक्रो.

(defn results-for-triplets [collect]
  (->> collect
       (partition 3 1)
       (map #(apply + %))))

(results-for-triplets [1 2 3 4 5])
=> (6 9 12)

आप से बचने कर सकते हैं apply, यदि आपके समारोह destructures पारित अनुक्रम:

(defn sum3 [[a b c]]
  (+ a b c))

(defn results-for-triplets [collect]
  (->> collect
       (partition 3 1)
       (map sum3)))

(results-for-triplets [1 2 3 4 5])
=> (6 9 12)

यदि आप चाहते हैं कॉल करने के लिए समारोह के लिए पक्ष प्रभाव और फिर वापसी nilका उपयोग करें run!:

(defn print3 [[a b c]]
  (println a b c))

(defn results-for-triplets [collect]
  (->> collect
       (partition 3 1)
       (run! print3)))

(results-for-triplets [1 2 3 4 5])
1 2 3
2 3 4
3 4 5
=> nil
2021-11-20 11:51:18

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................